| def test_children_query(): |
| g = new_graph() |
| |
| def mk(*args): |
| k = g.key(*args) |
| g.add_node(k) |
| return k |
| |
| par = mk("parent", "parent") |
| |
| def q(parent, order_by): |
| keys = [] |
| for n in g.children(parent, order_by): |
| keys.append(n.key) |
| return keys |
| |
| t1_a1 = mk("t1", "id1", "a", "1") |
| t1_a2 = mk("t1", "id1", "a", "2") |
| t1_b1 = mk("t1", "id1", "b", "1") |
| t2_a1 = mk("t2", "id1", "a", "1") |
| |
| g.add_edge(par, t1_b1) |
| g.add_edge(par, t2_a1) |
| g.add_edge(par, t2_a1, title = "another rel") |
| g.add_edge(par, t1_a2) |
| g.add_edge(par, t1_a1) |
| |
| g.finalize() |
| |
| # Querying in 'def' order returns nodes in order we defined edges. |
| assert.eq(q(par, "def"), [t1_b1, t2_a1, t1_a2, t1_a1]) |
| |
| # Querying by key order returns nodes in lexicographical order. |
| assert.eq(q(par, "key"), [t1_a1, t1_a2, t1_b1, t2_a1]) |
| |
| # Asking for children of non-existing node is OK. |
| assert.eq(q(g.key("t", "missing"), "key"), []) |
| |
| # order_by is validated. |
| assert.fails(lambda: q(par, "blah"), 'unknown order "blah"') |
| |
| test_children_query() |