示例#1
0
 def test_can_graph_pull_node(self):
     alice_1 = Node()
     alice_2 = Node("Person", name="Alice")
     self.graph.create(alice_2)
     assert set(alice_1.labels()) == set()
     assert dict(alice_1) == {}
     alice_1.__remote__ = RemoteEntity(remote(alice_2).uri)
     self.graph.pull(alice_1)
     assert set(alice_1.labels()) == set(alice_2.labels())
     assert dict(alice_1) == dict(alice_2)
示例#2
0
 def test_node_label_pull_scenarios(self):
     label_sets = [set(), {"Foo"}, {"Foo", "Bar"}, {"Spam"}]
     for old_labels in label_sets:
         for new_labels in label_sets:
             node = Node(*old_labels)
             self.graph.create(node)
             node_id = remote(node)._id
             assert set(node.labels()) == old_labels
             if old_labels:
                 remove_clause = "REMOVE a:%s" % ":".join(old_labels)
             else:
                 remove_clause = ""
             if new_labels:
                 set_clause = "SET a:%s" % ":".join(new_labels)
             else:
                 set_clause = ""
             if remove_clause or set_clause:
                 self.graph.run("MATCH (a) WHERE id(a)={x} %s %s" %
                                (remove_clause, set_clause),
                                x=node_id)
                 self.graph.pull(node)
                 assert set(node.labels()) == new_labels, \
                     "Failed to pull new labels %r over old labels %r" % \
                     (new_labels, old_labels)
示例#3
0
 def test_update_labels(self):
     node = Node("Person", name="Alice")
     node.update_labels({"Person", "Employee"})
     assert set(node.labels()) == {"Person", "Employee"}
示例#4
0
 def test_can_clear_labels(self):
     node = Node("Person", "Employee", name="Alice")
     node.clear_labels()
     assert set(node.labels()) == set()
示例#5
0
 def test_removing_non_existent_label_does_nothing(self):
     node = Node("Person", name="Alice")
     node.remove_label("Employee")
     assert set(node.labels()) == {"Person"}
示例#6
0
 def test_can_remove_label(self):
     node = Node("Person", "Employee", name="Alice")
     node.remove_label("Employee")
     assert set(node.labels()) == {"Person"}
示例#7
0
 def test_add_label_is_idempotent(self):
     node = Node("Person", name="Alice")
     node.add_label("Employee")
     node.add_label("Employee")
     assert set(node.labels()) == {"Person", "Employee"}