Files
Agent-System-Backend/internal/store/task_deletion_test.go
T

56 lines
1.8 KiB
Go

package store
import (
core "agent-system-core"
"context"
"testing"
)
func TestReviewDeletedArtifactMustLeaveKnowledge(t *testing.T) {
st := openTestStore(t)
a := core.Artifact{Owner: "o", ProjectID: "p", Name: "secret.txt"}
if err := st.CreateArtifact(&a, []byte("uniqueclassified")); err != nil {
t.Fatal(err)
}
if err := st.AddKnowledge(core.KnowledgeDoc{Owner: "o", ProjectID: "p", Source: "artifact", Ref: a.ID, Title: a.Name, Chunk: "uniqueclassified"}); err != nil {
t.Fatal(err)
}
if err := st.DeleteArtifact("o", a.ID); err != nil {
t.Fatal(err)
}
hits, err := st.SearchKnowledge("o", core.RetrievalQuery{Text: "uniqueclassified", ProjectID: "p"})
if err != nil {
t.Fatal(err)
}
if len(hits) > 0 {
t.Fatalf("deleted source is still retrievable: %d hits", len(hits))
}
}
func TestDeletedArtifactClearsVectorRowsAndRetrieval(t *testing.T) {
st := openTestStore(t)
ctx := context.Background()
a := core.Artifact{Owner: "o", ProjectID: "p", Name: "source.txt"}
if e := st.CreateArtifact(&a, []byte("uniqueindexed")); e != nil {
t.Fatal(e)
}
d := core.KnowledgeDoc{ID: "indexed-doc", Owner: "o", ProjectID: "p", Ref: a.ID, Title: a.Name, Chunk: "uniqueindexed", Source: "artifact"}
if e := st.AddKnowledge(d); e != nil {
t.Fatal(e)
}
if e := st.UpsertKnowledgeVectorExt(ctx, "o", d.ID, a.ID, "m", "h", []float32{1, 0}); e != nil {
t.Fatal(e)
}
if e := st.DeleteArtifact("o", a.ID); e != nil {
t.Fatal(e)
}
var rows int
if e := st.DB().QueryRow(st.q(`SELECT COUNT(*) FROM knowledge_vectors WHERE owner=? AND ref=?`), "o", a.ID).Scan(&rows); e != nil || rows != 0 {
t.Fatal("deleted vector rows retained", rows, e)
}
hits, e := st.SearchKnowledgeVectorsModel(ctx, "o", "m", []float32{1, 0}, 5, core.RetrievalQuery{ProjectID: "p"})
if e != nil || len(hits) != 0 {
t.Fatal("deleted source remains vector-retrievable", hits, e)
}
}