package jsonl import ( "fmt" "testing" "gitea.k3s.k0.nu/tools/photocli/internal/manifest/types" ) func TestSetSaveHook(t *testing.T) { old := SetSaveHook(func() error { return fmt.Errorf("hook error") }) if old != nil { t.Error("expected nil old hook") } restore := SetSaveHook(old) if restore == nil { t.Error("expected non-nil restore function") } } func TestSaveHookError(t *testing.T) { dir := t.TempDir() m := Load(dir) if err := m.OpenAppend(); err != nil { t.Fatal(err) } m.Add("x1", "photo.jpg", 1024, "local") old := SetSaveHook(func() error { return fmt.Errorf("hook error") }) defer SetSaveHook(old) if err := m.Save(); err == nil { t.Error("expected hook error from Save") } m.Close() } func TestSyncFuncError(t *testing.T) { dir := t.TempDir() m := Load(dir) if err := m.OpenAppend(); err != nil { t.Fatal(err) } m.Add("x1", "photo.jpg", 1024, "local") m.SyncFunc = func() error { return fmt.Errorf("sync func error") } if err := m.Save(); err == nil { t.Error("expected syncFunc error from Save") } m.Close() } func TestSaveError(t *testing.T) { dir := t.TempDir() m := Load(dir) if err := m.OpenAppend(); err != nil { t.Fatal(err) } m.Add("x1", "photo.jpg", 1024, "local") m.file.Close() if err := m.Save(); err == nil { t.Error("expected Sync error on closed file") } m.Close() } func TestAddEntryDefaultsPath(t *testing.T) { dir := t.TempDir() m := Load(dir) if err := m.OpenAppend(); err != nil { t.Fatal(err) } m.AddEntry(types.Entry{ID: "x1", Filename: "file.jpg", Size: 3, Cloud: "local", Checksum: "sha256:abc"}) m.Close() loaded := Load(dir).Entries()["x1"] if got := loaded.Path; got != "file.jpg" { t.Fatalf("jsonl path = %q", got) } if loaded.Checksum != "sha256:abc" { t.Fatalf("jsonl checksum = %q", loaded.Checksum) } }