package oltp
import (
"path/filepath"
"testing"
)
// The tag watermark is absent until set, holds the whole mark, the zero
// mark included, and goes with the repository.
func TestCITagWatermarkRoundTrip(t *testing.T) {
db, err := Open(filepath.Join(t.TempDir(), "oltp.db"))
if err != nil {
t.Fatal(err)
}
defer db.Close()
if _, ok := db.CITagWatermark("r"); ok {
t.Fatal("FAIL: a repository never seen has a tag watermark")
}
if err := db.SetCITagWatermark("r", CITagMark{}); err != nil {
t.Fatal(err)
}
if m, ok := db.CITagWatermark("r"); !ok || m != (CITagMark{}) {
t.Fatalf("FAIL: the zero mark read back as %+v, %v", m, ok)
}
want := CITagMark{Date: "2026-10-01T10:00:00", Src: "s1", Checkin: "c1", Name: "version-0.2.0"}
if err := db.SetCITagWatermark("r", want); err != nil {
t.Fatal(err)
}
if m, ok := db.CITagWatermark("r"); !ok || m != want {
t.Fatalf("FAIL: the mark read back as %+v, %v; want %+v", m, ok, want)
}
if err := db.PurgeRepo("r"); err != nil {
t.Fatal(err)
}
if _, ok := db.CITagWatermark("r"); ok {
t.Fatal("FAIL: the tag watermark outlived its repository")
}
t.Log("ok: the tag watermark round-trips and is purged with its repository")
}