| | |
| | | t.Errorf("node count = %d, want 1", count) |
| | | } |
| | | } |
| | | |
| | | func TestGetNodeLinks(t *testing.T) { |
| | | tmpDir := t.TempDir() |
| | | dbPath := filepath.Join(tmpDir, "test.db") |
| | | |
| | | store, err := Open(dbPath) |
| | | if err != nil { |
| | | t.Fatalf("Open failed: %v", err) |
| | | } |
| | | defer store.Close() |
| | | |
| | | // 插入测试节点 |
| | | node1 := &graph.Node{ |
| | | Path: "FAQ/001-测试.md", |
| | | Title: "测试文档", |
| | | Section: "FAQ", |
| | | Content: "# 测试\n\n内容", |
| | | } |
| | | node2 := &graph.Node{ |
| | | Path: "FAQ/002-相关.md", |
| | | Title: "相关文档", |
| | | Section: "FAQ", |
| | | Content: "# 相关\n\n内容", |
| | | } |
| | | |
| | | id1, err := store.InsertNode(node1) |
| | | if err != nil { |
| | | t.Fatalf("InsertNode node1 failed: %v", err) |
| | | } |
| | | |
| | | id2, err := store.InsertNode(node2) |
| | | if err != nil { |
| | | t.Fatalf("InsertNode node2 failed: %v", err) |
| | | } |
| | | |
| | | // 插入 wikilink 边 |
| | | edge := &graph.Edge{ |
| | | FromNode: id1, |
| | | ToNode: id2, |
| | | Relation: "wikilink", |
| | | Label: "相关文档", |
| | | } |
| | | if err := store.InsertEdge(edge); err != nil { |
| | | t.Fatalf("InsertEdge failed: %v", err) |
| | | } |
| | | |
| | | // 测试获取链接 |
| | | links, err := store.GetNodeLinks(id1) |
| | | if err != nil { |
| | | t.Fatalf("GetNodeLinks failed: %v", err) |
| | | } |
| | | if len(links) != 1 { |
| | | t.Errorf("links count = %d, want 1", len(links)) |
| | | } |
| | | if len(links) > 0 && links[0] != "FAQ/002-相关.md" { |
| | | t.Errorf("links[0] = %q, want %q", links[0], "FAQ/002-相关.md") |
| | | } |
| | | |
| | | // 测试无链接的节点 |
| | | links, err = store.GetNodeLinks(id2) |
| | | if err != nil { |
| | | t.Fatalf("GetNodeLinks for node2 failed: %v", err) |
| | | } |
| | | if len(links) != 0 { |
| | | t.Errorf("links count = %d, want 0", len(links)) |
| | | } |
| | | } |