blob: 3ae981fe59237925c29ed8ae03933d1a949c8311 [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()