use aletheiadb::core::temporal::time;
use aletheiadb::query::traits::GraphView;
use aletheiadb::{AletheiaDB, PropertyMapBuilder};
#[test]
fn test_graph_view_trait_coverage() {
let db = AletheiaDB::new().unwrap();
let node1 = db
.create_node(
"Person",
PropertyMapBuilder::new().insert("name", "Alice").build(),
)
.unwrap();
let node2 = db
.create_node(
"Person",
PropertyMapBuilder::new().insert("name", "Bob").build(),
)
.unwrap();
let edge_id = db
.create_edge(node1, node2, "KNOWS", PropertyMapBuilder::new().build())
.unwrap();
let view: &dyn GraphView = &db;
let n1 = view.get_node(node1).unwrap();
assert_eq!(n1.id, node1);
let e = view.get_edge(edge_id).unwrap();
assert_eq!(e.id, edge_id);
assert_eq!(view.get_edge_target(edge_id).unwrap(), node2);
assert_eq!(view.get_edge_source(edge_id).unwrap(), node1);
let out_edges = view.get_outgoing_edges(node1);
assert_eq!(out_edges.len(), 1);
assert_eq!(out_edges[0], edge_id);
let in_edges = view.get_incoming_edges(node2);
assert_eq!(in_edges.len(), 1);
assert_eq!(in_edges[0], edge_id);
let out_label = view.get_outgoing_edges_with_label(node1, "KNOWS");
assert_eq!(out_label.len(), 1);
let now = time::now();
let n1_t = view.get_node_at_time(node1, now, now).unwrap();
assert_eq!(n1_t.id, node1);
let e_t = view.get_edge_at_time(edge_id, now, now).unwrap();
assert_eq!(e_t.id, edge_id);
let out_t = view.get_outgoing_edges_at_time(node1, now, now);
assert_eq!(out_t.len(), 1);
let in_t = view.get_incoming_edges_at_time(node2, now, now);
assert_eq!(in_t.len(), 1);
}