blob: a060c89adb6e67281d419b94b653b17026080d6c [file] [log] [blame]
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()