100 lines
2.2 KiB
Go
100 lines
2.2 KiB
Go
package notes
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"verstak/internal/core/files"
|
|
"verstak/internal/core/nodes"
|
|
"verstak/internal/core/storage"
|
|
)
|
|
|
|
func setupService(t *testing.T) (*Service, *nodes.Repository, string) {
|
|
t.Helper()
|
|
dir := t.TempDir()
|
|
db, err := storage.Open(filepath.Join(dir, "test.db"))
|
|
if err != nil {
|
|
t.Fatalf("open db: %v", err)
|
|
}
|
|
t.Cleanup(func() { db.Close() })
|
|
|
|
nodeRepo := nodes.NewRepository(db)
|
|
fileSvc := files.NewService(db, dir)
|
|
svc := NewService(db, dir, nodeRepo, fileSvc)
|
|
return svc, nodeRepo, dir
|
|
}
|
|
|
|
func TestCreateAndRead(t *testing.T) {
|
|
svc, _, vaultRoot := setupService(t)
|
|
|
|
node, fileRec, err := svc.Create("", "My Note")
|
|
if err != nil {
|
|
t.Fatalf("Create: %v", err)
|
|
}
|
|
if node.Title != "My Note" {
|
|
t.Errorf("title = %q", node.Title)
|
|
}
|
|
if fileRec == nil || fileRec.ID == "" {
|
|
t.Fatal("file record missing")
|
|
}
|
|
|
|
// Read initial content.
|
|
content, err := svc.Read(node.ID)
|
|
if err != nil {
|
|
t.Fatalf("Read: %v", err)
|
|
}
|
|
if !strings.Contains(content, "My Note") {
|
|
t.Errorf("content = %q", content)
|
|
}
|
|
|
|
// Verify file on disk.
|
|
spacesDir := filepath.Join(vaultRoot, "spaces")
|
|
entries, _ := os.ReadDir(spacesDir)
|
|
if len(entries) == 0 {
|
|
t.Error("expected file in spaces/")
|
|
}
|
|
}
|
|
|
|
func TestSaveAndBackup(t *testing.T) {
|
|
svc, _, vaultRoot := setupService(t)
|
|
|
|
node, _, _ := svc.Create("", "Backup Test")
|
|
|
|
// Save new content.
|
|
newContent := "# Updated\n\nThis is the new content."
|
|
if err := svc.Save(node.ID, newContent); err != nil {
|
|
t.Fatalf("Save: %v", err)
|
|
}
|
|
|
|
// Read back.
|
|
got, err := svc.Read(node.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got != newContent {
|
|
t.Errorf("content = %q, want %q", got, newContent)
|
|
}
|
|
|
|
// Check backup exists.
|
|
histDir := filepath.Join(vaultRoot, ".verstak", "history")
|
|
entries, _ := os.ReadDir(histDir)
|
|
if len(entries) != 1 {
|
|
t.Errorf("backup count = %d, want 1", len(entries))
|
|
}
|
|
}
|
|
|
|
func TestDeleteNote(t *testing.T) {
|
|
svc, nodeRepo, _ := setupService(t)
|
|
|
|
node, _, _ := svc.Create("", "To Delete")
|
|
if err := svc.Delete(node.ID); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if _, err := nodeRepo.GetActive(node.ID); err == nil {
|
|
t.Error("expected deleted node to be inactive")
|
|
}
|
|
}
|