Files
donniemarko/internal/service/note_test.go
2026-02-03 09:41:03 +01:00

77 lines
1.4 KiB
Go

package service
import (
"testing"
"donniemarko/internal/note"
"donniemarko/internal/storage"
)
var service *NotesService
func TestMain(m *testing.M) {
storage := storage.NewNoteStorage()
notes := []*note.Note{
{ID: "test1", Title: "Golang Tutorial", Content: "Learn Go"},
{ID: "test2", Title: "Rust Guide", Content: "Learn Rust"},
}
for _, note := range notes {
storage.Create(note)
}
service = NewNoteService()
service.SetStorage(storage)
m.Run()
}
func TestQueryNotes_WithSearch(t *testing.T) {
opts := QueryOptions{
SearchTerm: "Go",
SortBy: "alpha",
}
results, err := service.QueryNotes(opts)
if err != nil {
t.Fatal(err)
}
if len(results) != 1 {
t.Errorf("expected 1 result, got %d", len(results))
}
if results[0].Title != "Golang Tutorial" {
t.Error("wrong note returned")
}
}
func TestTags_NormalizationAndRemove(t *testing.T) {
err := service.AddTag("test1", " Go ")
if err != nil {
t.Fatalf("add tag: %v", err)
}
n, err := service.GetNoteByHash("test1")
if err != nil {
t.Fatalf("get note: %v", err)
}
if len(n.Tags) != 1 || n.Tags[0] != "go" {
t.Fatalf("expected normalized tag, got %+v", n.Tags)
}
err = service.RemoveTag("test1", "GO")
if err != nil {
t.Fatalf("remove tag: %v", err)
}
n, err = service.GetNoteByHash("test1")
if err != nil {
t.Fatalf("get note: %v", err)
}
if len(n.Tags) != 0 {
t.Fatalf("expected tag to be removed, got %+v", n.Tags)
}
}