()
| 482 | |
| 483 | #[test] |
| 484 | fn test_kg_edge_crud() { |
| 485 | let dir = tempdir().unwrap(); |
| 486 | let pristine = Pristine::open(dir.path().join("db")).unwrap(); |
| 487 | let mut txn = pristine.write_txn().unwrap(); |
| 488 | txn.init_kg().unwrap(); |
| 489 | |
| 490 | // Create nodes |
| 491 | txn.upsert_kg_node(&KgNode::new("change:abc", "change", "abc", "graph")) |
| 492 | .unwrap(); |
| 493 | txn.upsert_kg_node(&KgNode::new("file:auth.rs", "file", "auth.rs", "graph")) |
| 494 | .unwrap(); |
| 495 | txn.upsert_kg_node(&KgNode::new("file:main.rs", "file", "main.rs", "graph")) |
| 496 | .unwrap(); |
| 497 | |
| 498 | // Create edges |
| 499 | txn.upsert_kg_edge(&KgEdge::new("change:abc", "file:auth.rs", "MODIFIES")) |
| 500 | .unwrap(); |
| 501 | txn.upsert_kg_edge(&KgEdge::new("change:abc", "file:main.rs", "MODIFIES")) |
| 502 | .unwrap(); |
| 503 | |
| 504 | // Query outgoing |
| 505 | let outgoing = txn.get_kg_edges_from("change:abc").unwrap(); |
| 506 | assert_eq!(outgoing.len(), 2); |
| 507 | |
| 508 | // Query incoming |
| 509 | let incoming = txn.get_kg_edges_to("file:auth.rs").unwrap(); |
| 510 | assert_eq!(incoming.len(), 1); |
| 511 | assert_eq!(incoming[0].from_id, "change:abc"); |
| 512 | |
| 513 | // Delete edge |
| 514 | assert!(txn |
| 515 | .del_kg_edge("change:abc", "file:auth.rs", "MODIFIES") |
| 516 | .unwrap()); |
| 517 | assert_eq!(txn.get_kg_edges_from("change:abc").unwrap().len(), 1); |
| 518 | |
| 519 | // Counts |
| 520 | assert_eq!(txn.count_kg_nodes().unwrap(), 3); |
| 521 | assert_eq!(txn.count_kg_edges().unwrap(), 1); |
| 522 | |
| 523 | txn.commit().unwrap(); |
| 524 | } |
| 525 | |
| 526 | #[test] |
| 527 | fn test_kg_neighbors() { |
nothing calls this directly
no test coverage detected