Files
photocli/internal/manifest/jsonl/store_test.go
T
Ein Anderssono c9ac014473
pipeline / test (push) Has been cancelled
pipeline / build (push) Has been cancelled
v0.10.0: ports and adapters refactor
- Extract shared manifest types into internal/manifest/types leaf package.
- Extract SQLite adapter into internal/manifest/sqlite.
- Extract JSONL adapter into internal/manifest/jsonl.
- Isolate modernc.org/sqlite import to sqlite/adapter.go.
- Add adapter-backed registry with manifest.Default.
- Adapter-agnostic ConvertManifest in types/.
- MemoryAdapter for in-memory manifest testing.
- CLI uses manifest.Default registry directly.
- SQLite LogWriter type assertion moved into SQLiteAdapter.
- Manifest interface includes Entries(); EntryReader removed.
- No behavior changes. 100% coverage across all 6 packages.
2026-06-15 08:27:38 +02:00

80 lines
1.8 KiB
Go

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)
}
}