blob: 9d93819cbe3d6e572ff685b9223030c975c99fa0 [file] [log] [blame]
def test_parents_query():
g = new_graph()
def mk(*args):
k = g.key(*args)
g.add_node(k)
return k
child = mk('child', 'child')
def q(child, order_by):
keys = []
for n in g.parents(child, 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(t1_b1, child)
g.add_edge(t2_a1, child)
g.add_edge(t2_a1, child, title='another rel')
g.add_edge(t1_a2, child)
g.add_edge(t1_a1, child)
g.finalize()
# Querying in 'def' order returns nodes in order we defined edges.
assert.eq(q(child, 'def'), [t1_b1, t2_a1, t1_a2, t1_a1])
# Querying by key order returns nodes in lexicographical order.
assert.eq(q(child, 'key'), [t1_a1, t1_a2, t1_b1, t2_a1])
# Asking for parents of non-existing node is OK.
assert.eq(q(g.key('t', 'missing'), 'key'), [])
# order_by is validated.
assert.fails(lambda: q(child, 'blah'), 'unknown order "blah"')
test_parents_query()