Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions crates/frilvault-core/src/tests/helper.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
use std::path::Path;

use crate::{
NoteService, PathResolver, VaultContext, WorkspaceIndexRepository, WorkspaceRepository,
WorkspaceService, YamlNoteRepository,
};

pub fn create_test_note_service(workspace_root: &Path) -> NoteService {
let resolver = PathResolver::new(workspace_root);

let note_repository = YamlNoteRepository::new(resolver.clone());
let index_repository = WorkspaceIndexRepository::new(resolver);

let vault_context = VaultContext::new(note_repository, index_repository);

NoteService::new(vault_context)
}

fn create_test_vault_context(workspace_root: &Path) -> VaultContext {
let resolver = PathResolver::new(workspace_root);
let workspace_repository = WorkspaceRepository::new(resolver.clone());
workspace_repository.create_if_missing().unwrap();

let note_repository = YamlNoteRepository::new(resolver.clone());
let index_repository = WorkspaceIndexRepository::new(resolver);
index_repository.create_if_missing().unwrap();

VaultContext::new(note_repository, index_repository)
}

pub fn create_test_workspace_service(workspace_root: &Path) -> WorkspaceService {
let vault_context = create_test_vault_context(workspace_root);
let resolver = PathResolver::new(workspace_root);
let repository = WorkspaceIndexRepository::new(resolver);

WorkspaceService::new(vault_context, repository)
}
2 changes: 2 additions & 0 deletions crates/frilvault-core/src/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
mod helper;

#[cfg(test)]
mod note_entity_test;

Expand Down
33 changes: 11 additions & 22 deletions crates/frilvault-core/src/tests/note_service_test.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
use super::helper::create_test_note_service;
use crate::{
AddNoteInput, LineAnchor, NoteAnchor, NoteService, PathResolver, SymbolAnchor, SymbolKind,
VaultContext, WorkspaceIndexRepository, YamlNoteRepository, constants::NOTE_FILE_EXTENSION,
AddNoteInput, LineAnchor, NoteAnchor, SymbolAnchor, SymbolKind, constants::NOTE_FILE_EXTENSION,
};

use std::{fs, path::Path};

pub fn return_service(workspace_root: &Path) -> NoteService {
let resolver = PathResolver::new(workspace_root);

let note_repository = YamlNoteRepository::new(resolver.clone());
let index_repository = WorkspaceIndexRepository::new(resolver);

let vault_context = VaultContext::new(note_repository, index_repository);

NoteService::new(vault_context)
}
use std::fs;

#[test]
fn add_line_type_note_creates_yaml_file() {
Expand All @@ -23,7 +12,7 @@ fn add_line_type_note_creates_yaml_file() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

let input = AddNoteInput {
source_file: "src/main.rs".into(),
Expand Down Expand Up @@ -57,7 +46,7 @@ fn add_symbol_type_note_creates_yaml_file() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

let input = AddNoteInput {
source_file: "src/main.rs".into(),
Expand Down Expand Up @@ -107,7 +96,7 @@ fn load_notes_from_existing_yaml() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand All @@ -132,7 +121,7 @@ fn add_note_and_load_note() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -169,7 +158,7 @@ fn delete_note_removes_note() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

let note = service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -198,7 +187,7 @@ fn update_note_changes_content() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

let note = service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -231,7 +220,7 @@ fn search_notes_finds_matching_notes() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -291,7 +280,7 @@ fn search_finds_symbol_anchor() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = return_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down
51 changes: 14 additions & 37 deletions crates/frilvault-core/src/tests/workspace_index_repository_test.rs
Original file line number Diff line number Diff line change
@@ -1,35 +1,11 @@
use std::fs;

use super::helper::{create_test_note_service, create_test_workspace_service};
use crate::{
AddNoteInput, LineAnchor, NoteAnchor, NoteService, PathResolver, SymbolAnchor, SymbolKind,
VaultContext, WorkspaceIndex, WorkspaceIndexRepository, WorkspaceRepository, WorkspaceService,
YamlNoteRepository,
AddNoteInput, LineAnchor, NoteAnchor, PathResolver, SymbolAnchor, SymbolKind, WorkspaceIndex,
WorkspaceIndexRepository,
};

fn create_vault_context(workspace_root: &std::path::Path) -> VaultContext {
let resolver = PathResolver::new(workspace_root);
let workspace_repository = WorkspaceRepository::new(resolver.clone());
workspace_repository.create_if_missing().unwrap();

let note_repository = YamlNoteRepository::new(resolver.clone());
let index_repository = WorkspaceIndexRepository::new(resolver);
index_repository.create_if_missing().unwrap();

VaultContext::new(note_repository, index_repository)
}

fn create_note_service(workspace_root: &std::path::Path) -> NoteService {
NoteService::new(create_vault_context(workspace_root))
}

fn create_workspace_service(workspace_root: &std::path::Path) -> WorkspaceService {
let vault_context = create_vault_context(workspace_root);
let resolver = PathResolver::new(workspace_root);
let repository = WorkspaceIndexRepository::new(resolver);

WorkspaceService::new(vault_context, repository)
}

#[test]
fn load_returns_default_index_when_missing() {
let workspace_root =
Expand Down Expand Up @@ -86,6 +62,7 @@ fn create_if_missing_creates_index_file() {
fs::create_dir_all(&workspace_root).unwrap();

let resolver = PathResolver::new(&workspace_root);

let repository = WorkspaceIndexRepository::new(resolver.clone());

repository.create_if_missing().unwrap();
Expand All @@ -107,7 +84,7 @@ fn rebuild_creates_index_from_note_files() {

let resolver = PathResolver::new(&workspace_root);

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -170,7 +147,7 @@ fn rebuild_marks_missing_files_as_not_existing() {

let resolver = PathResolver::new(&workspace_root);

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -198,7 +175,7 @@ fn health_check_detects_missing_files_from_note_repository() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand All @@ -210,7 +187,7 @@ fn health_check_detects_missing_files_from_note_repository() {
})
.unwrap();

let mut workspace_service = create_workspace_service(&workspace_root);
let mut workspace_service = create_test_workspace_service(&workspace_root);

let health = workspace_service.health_check().unwrap();

Expand All @@ -228,9 +205,9 @@ fn stats_counts_line_and_symbol_notes() {

fs::create_dir_all(&workspace_root).unwrap();

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

let mut workspace_service = create_workspace_service(&workspace_root);
let mut workspace_service = create_test_workspace_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand Down Expand Up @@ -286,7 +263,7 @@ fn repair_suggests_matching_file_names() {

fs::write(workspace_root.join("src/core/lib.rs"), "").unwrap();

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand All @@ -298,7 +275,7 @@ fn repair_suggests_matching_file_names() {
})
.unwrap();

let mut workspace_service = create_workspace_service(&workspace_root);
let mut workspace_service = create_test_workspace_service(&workspace_root);

let suggestions = workspace_service.repair_suggestions().unwrap();

Expand All @@ -322,7 +299,7 @@ fn apply_repairs_moves_note_file() {

let resolver = PathResolver::new(&workspace_root);

let mut service = create_note_service(&workspace_root);
let mut service = create_test_note_service(&workspace_root);

service
.add_note(AddNoteInput {
Expand All @@ -338,7 +315,7 @@ fn apply_repairs_moves_note_file() {

assert!(old_note_path.exists());

let mut workspace_service = create_workspace_service(&workspace_root);
let mut workspace_service = create_test_workspace_service(&workspace_root);

let repaired = workspace_service.apply_repairs().unwrap();

Expand Down