package store import ( "context" "testing" ) // A fresh DB has no marker yet, so the current embedder is recorded and // nothing is flagged. func TestCheckEmbedderFreshDBRecords(t *testing.T) { s := newTestStore(t) ctx := context.Background() stored, mismatch, err := s.CheckEmbedder(ctx, "multilingual-e5-small@384") if err != nil { t.Fatalf("CheckEmbedder: %v", err) } if mismatch { t.Fatal("fresh DB reported a mismatch") } if stored != "multilingual-e5-small@384" { t.Fatalf("stored = %q", stored) } got, err := s.Meta(ctx, metaKeyEmbedderID) if err != nil { t.Fatalf("Meta: %v", err) } if got != "multilingual-e5-small@384" { t.Fatalf("marker not persisted, got %q", got) } } // Both models are 384-dim, so this is the only thing that catches the swap. func TestCheckEmbedderDifferentModelMismatch(t *testing.T) { s := newTestStore(t) ctx := context.Background() if err := s.SetMeta(ctx, metaKeyEmbedderID, "paraphrase-multilingual-MiniLM-L12-v2@384"); err != nil { t.Fatalf("SetMeta: %v", err) } stored, mismatch, err := s.CheckEmbedder(ctx, "multilingual-e5-small@384") if err != nil { t.Fatalf("CheckEmbedder: %v", err) } if !mismatch { t.Fatal("different embedder not detected") } if stored != "paraphrase-multilingual-MiniLM-L12-v2@384" { t.Fatalf("stored = %q", stored) } } // The same embedder must never raise a false alarm, including on re-check. func TestCheckEmbedderSameModelNoAlarm(t *testing.T) { s := newTestStore(t) ctx := context.Background() for i := 0; i < 2; i++ { _, mismatch, err := s.CheckEmbedder(ctx, "multilingual-e5-small@384") if err != nil { t.Fatalf("CheckEmbedder: %v", err) } if mismatch { t.Fatalf("false alarm on pass %d", i) } } }