diff --git a/crates/frilvault-core/src/tests/helper.rs b/crates/frilvault-core/src/tests/helper.rs new file mode 100644 index 0000000..e1b63fc --- /dev/null +++ b/crates/frilvault-core/src/tests/helper.rs @@ -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) +} diff --git a/crates/frilvault-core/src/tests/mod.rs b/crates/frilvault-core/src/tests/mod.rs index 6320302..33d1c0b 100644 --- a/crates/frilvault-core/src/tests/mod.rs +++ b/crates/frilvault-core/src/tests/mod.rs @@ -1,3 +1,5 @@ +mod helper; + #[cfg(test)] mod note_entity_test; diff --git a/crates/frilvault-core/src/tests/note_service_test.rs b/crates/frilvault-core/src/tests/note_service_test.rs index a001d45..43e11bf 100644 --- a/crates/frilvault-core/src/tests/note_service_test.rs +++ b/crates/frilvault-core/src/tests/note_service_test.rs @@ -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() { @@ -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(), @@ -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(), @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { diff --git a/crates/frilvault-core/src/tests/workspace_index_repository_test.rs b/crates/frilvault-core/src/tests/workspace_index_repository_test.rs index 200ea37..3bbcefb 100644 --- a/crates/frilvault-core/src/tests/workspace_index_repository_test.rs +++ b/crates/frilvault-core/src/tests/workspace_index_repository_test.rs @@ -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 = @@ -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(); @@ -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 { @@ -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 { @@ -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 { @@ -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(); @@ -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 { @@ -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 { @@ -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(); @@ -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 { @@ -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();