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)
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)
def test_update_labels(self): node = Node("Person", name="Alice") node.update_labels({"Person", "Employee"}) assert set(node.labels()) == {"Person", "Employee"}
def test_can_clear_labels(self): node = Node("Person", "Employee", name="Alice") node.clear_labels() assert set(node.labels()) == set()
def test_removing_non_existent_label_does_nothing(self): node = Node("Person", name="Alice") node.remove_label("Employee") assert set(node.labels()) == {"Person"}
def test_can_remove_label(self): node = Node("Person", "Employee", name="Alice") node.remove_label("Employee") assert set(node.labels()) == {"Person"}
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"}