mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-15 12:14:17 +00:00
test(integration): fix pre-existing bugs + post-Phase-4 contract update
Three fixes required to run the integration suite after Phase 4: 1. v3_vault_store_test.go makeVaultDoc: AgentID is *string (nullable), not string — was a pre-existing type error from v3 commit8f56ddaathat blocked the test binary build. Pass &agentID. 2. vault_classify_test.go imports: remove unused `store/pg` import — pre-existing from v3 commit4b7a2e6e. 3. TestVaultClassify_DeleteDocLinksByTypes_MultipleTypes: fix off-by-one in target-doc loop. Pre-existing runtime panic from v3 commit — loop created 7 targets but linkTypes slice has 8 entries, accessing docs[8] on a len-8 slice. Changed loop to `range 8`. 4. TestVaultClassify_DeleteDocLinksByTypes_NonExistentDoc: swap "fake-doc-id-12345" placeholder for a well-formed but unused UUID. Post-Phase-4, parseUUID rejects bare strings at the caller boundary; the "non-existent = no-op" contract requires a syntactically valid UUID. Per Q7 documented contract change. Phase 4 Step 4g integration gate.
This commit is contained in:
1 parent
d29c3dd943
commit
dd65fbcba0
2 files changed
+8
-6
No files matched your search
@@ -21,7 +21,7 @@ func newVaultStore(db *sql.DB) *pg.PGVaultStore {
|
||||
func makeVaultDoc(tenantID, agentID, path, title string) *store.VaultDocument {
|
||||
return &store.VaultDocument{
|
||||
TenantID: tenantID,
|
||||
AgentID: agentID,
|
||||
AgentID: &agentID,
|
||||
Scope: "personal",
|
||||
Path: path,
|
||||
Title: title,
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/nextlevelbuilder/goclaw/internal/store"
|
||||
"github.com/nextlevelbuilder/goclaw/internal/store/pg"
|
||||
)
|
||||
|
||||
func TestVaultClassify_DeleteDocLinksByTypes_SingleType(t *testing.T) {
|
||||
@@ -97,12 +96,12 @@ func TestVaultClassify_DeleteDocLinksByTypes_MultipleTypes(t *testing.T) {
|
||||
tid := tenantID.String()
|
||||
aid := agentID.String()
|
||||
|
||||
// Create source doc and 4 target docs (for 6 different link types + semantic)
|
||||
// Create source doc and 8 target docs (one per link type: 6 classify + semantic + wikilink).
|
||||
docSource := makeVaultDoc(tid, aid, "source.md", "Source")
|
||||
docs := make([]*store.VaultDocument, 0)
|
||||
docs = append(docs, docSource)
|
||||
|
||||
for i := 0; i < 7; i++ {
|
||||
for i := range 8 {
|
||||
doc := makeVaultDoc(tid, aid, "classify/target-"+string(rune('a'+i))+".md", "Target "+string(rune('A'+i)))
|
||||
if err := vs.UpsertDocument(ctx, doc); err != nil {
|
||||
t.Fatalf("UpsertDocument target %d: %v", i, err)
|
||||
@@ -443,8 +442,11 @@ func TestVaultClassify_DeleteDocLinksByTypes_NonExistentDoc(t *testing.T) {
|
||||
|
||||
tid := tenantID.String()
|
||||
|
||||
// Try to delete links from non-existent doc — should succeed (no-op)
|
||||
fakeDocID := "fake-doc-id-12345"
|
||||
// Use a well-formed but non-existent UUID — post-Phase-4 parseUUID rejects
|
||||
// bare strings like "fake-doc-id-12345" at the caller boundary, so the
|
||||
// "non-existent doc = no-op" contract requires a syntactically valid UUID
|
||||
// that just happens to not exist in the DB.
|
||||
fakeDocID := "00000000-0000-4000-8000-000000000dea"
|
||||
if err := vs.DeleteDocLinksByTypes(ctx, tid, fakeDocID, []string{"reference"}); err != nil {
|
||||
t.Fatalf("DeleteDocLinksByTypes on non-existent doc: %v", err)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user