| | |
| | | t.Errorf("links count = %d, want 0", len(links)) |
| | | } |
| | | } |
| | | |
| | | func TestNodeTypeSeparation(t *testing.T) { |
| | | tmpDir := t.TempDir() |
| | | store, err := Open(filepath.Join(tmpDir, "test.db")) |
| | | if err != nil { |
| | | t.Fatalf("Open failed: %v", err) |
| | | } |
| | | defer store.Close() |
| | | |
| | | // 插入文件节点 + tag 节点 |
| | | fileID, err := store.InsertNode(&graph.Node{ |
| | | Path: "FAQ/001-测试.md", Title: "测试文档", Section: "FAQ", NodeType: "file", |
| | | Tags: []string{"电磁阀"}, |
| | | }) |
| | | if err != nil { |
| | | t.Fatalf("InsertNode file failed: %v", err) |
| | | } |
| | | tagID, err := store.InsertNode(&graph.Node{ |
| | | Path: "tag:电磁阀", Title: "电磁阀", NodeType: "tag", |
| | | }) |
| | | if err != nil { |
| | | t.Fatalf("InsertNode tag failed: %v", err) |
| | | } |
| | | |
| | | // tag 节点不进 FTS |
| | | if err := store.CreateFTS(); err != nil { |
| | | t.Fatalf("CreateFTS failed: %v", err) |
| | | } |
| | | if err := store.PopulateFTS(); err != nil { |
| | | t.Fatalf("PopulateFTS failed: %v", err) |
| | | } |
| | | res, err := store.FTSSearch([]string{"测试"}, 10) |
| | | if err != nil { |
| | | t.Fatalf("FTSSearch failed: %v", err) |
| | | } |
| | | for _, r := range res { |
| | | if r.ID == tagID { |
| | | t.Error("FTS result contains tag node") |
| | | } |
| | | } |
| | | |
| | | // FindNodesByKeyword 不返回 tag 节点 |
| | | nodes, err := store.FindNodesByKeyword("电磁阀") |
| | | if err != nil { |
| | | t.Fatalf("FindNodesByKeyword failed: %v", err) |
| | | } |
| | | for _, n := range nodes { |
| | | if n.ID == tagID { |
| | | t.Error("FindNodesByKeyword returned tag node") |
| | | } |
| | | } |
| | | |
| | | // GetAllNodes 只返回 file 节点 |
| | | all, err := store.GetAllNodes() |
| | | if err != nil { |
| | | t.Fatalf("GetAllNodes failed: %v", err) |
| | | } |
| | | for _, n := range all { |
| | | if n.ID == tagID { |
| | | t.Error("GetAllNodes returned tag node") |
| | | } |
| | | } |
| | | _ = fileID |
| | | } |