class TestDeletion(object): @pytest.fixture(autouse=True) def setup(self, graph): self.batch = WriteBatch(graph) self.graph = graph def test_can_delete_relationship_and_related_nodes(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) self.batch.create((0, "KNOWS", 1)) alice, bob, ab = self.batch.submit() assert alice.exists assert bob.exists assert ab.exists self.batch.clear() self.batch.delete(ab) self.batch.delete(alice) self.batch.delete(bob) self.batch.run() assert not alice.exists assert not bob.exists assert not ab.exists
class TestDeletion(object): @pytest.fixture(autouse=True) def setup(self, graph): self.batch = WriteBatch(graph) self.graph = graph def test_can_delete_relationship_and_related_nodes(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) self.batch.create((0, "KNOWS", 1)) alice, bob, ab = self.batch.submit() assert alice.exists assert bob.exists assert ab.exists self.batch.clear() self.batch.delete(ab) self.batch.delete(alice) self.batch.delete(bob) self.batch.run() assert not alice.exists assert not bob.exists assert not ab.exists
class TestUniqueRelationshipCreation(object): @pytest.fixture(autouse=True) def setup(self, graph): self.batch = WriteBatch(graph) def test_can_create_relationship_if_none_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) alice, bob = self.batch.submit() self.batch.clear() self.batch.get_or_create_path( alice, ("KNOWS", {"since": 2000}), bob) path, = self.batch.submit() knows = path.relationships[0] assert isinstance(knows, Relationship) assert knows.start_node == alice assert knows.type == "KNOWS" assert knows.end_node == bob assert knows["since"] == 2000 self.recycling = [knows, alice, bob] def test_will_get_relationship_if_one_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) alice, bob = self.batch.submit() self.batch.clear() self.batch.get_or_create_path( alice, ("KNOWS", {"since": 2000}), bob) self.batch.get_or_create_path( alice, ("KNOWS", {"since": 2000}), bob) path1, path2 = self.batch.submit() assert path1 == path2 def test_will_fail_batch_if_more_than_one_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) self.batch.create((0, "KNOWS", 1)) self.batch.create((0, "KNOWS", 1)) alice, bob, k1, k2 = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, "KNOWS", bob) try: self.batch.submit() except BatchError as error: cause = error.__cause__ assert isinstance(cause, GraphError) assert cause.__class__.__name__ == "UniquePathNotUniqueException" else: assert False def test_can_create_relationship_and_start_node(self): self.batch.create({"name": "Bob"}) bob, = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(None, "KNOWS", bob) path, = self.batch.submit() knows = path.relationships[0] alice = knows.start_node assert isinstance(knows, Relationship) assert isinstance(alice, Node) assert knows.type == "KNOWS" assert knows.end_node == bob self.recycling = [knows, alice, bob] def test_can_create_relationship_and_end_node(self): self.batch.create({"name": "Alice"}) alice, = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, "KNOWS", None) path, = self.batch.submit() knows = path.relationships[0] bob = knows.end_node assert isinstance(knows, Relationship) assert knows.start_node == alice assert knows.type == "KNOWS" assert isinstance(bob, Node) self.recycling = [knows, alice, bob]
class TestUniqueRelationshipCreation(object): @pytest.fixture(autouse=True) def setup(self, graph): self.batch = WriteBatch(graph) def test_can_create_relationship_if_none_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) alice, bob = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, ("KNOWS", {"since": 2000}), bob) path, = self.batch.submit() knows = path.relationships[0] assert isinstance(knows, Relationship) assert knows.start_node == alice assert knows.type == "KNOWS" assert knows.end_node == bob assert knows["since"] == 2000 self.recycling = [knows, alice, bob] def test_will_get_relationship_if_one_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) alice, bob = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, ("KNOWS", {"since": 2000}), bob) self.batch.get_or_create_path(alice, ("KNOWS", {"since": 2000}), bob) path1, path2 = self.batch.submit() assert path1 == path2 def test_will_fail_batch_if_more_than_one_exists(self): self.batch.create({"name": "Alice"}) self.batch.create({"name": "Bob"}) self.batch.create((0, "KNOWS", 1)) self.batch.create((0, "KNOWS", 1)) alice, bob, k1, k2 = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, "KNOWS", bob) try: self.batch.submit() except BatchError as error: cause = error.__cause__ assert cause.__class__.__name__ == "UniquePathNotUniqueException" else: assert False def test_can_create_relationship_and_start_node(self): self.batch.create({"name": "Bob"}) bob, = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(None, "KNOWS", bob) path, = self.batch.submit() knows = path.relationships[0] alice = knows.start_node assert isinstance(knows, Relationship) assert isinstance(alice, Node) assert knows.type == "KNOWS" assert knows.end_node == bob self.recycling = [knows, alice, bob] def test_can_create_relationship_and_end_node(self): self.batch.create({"name": "Alice"}) alice, = self.batch.submit() self.batch.clear() self.batch.get_or_create_path(alice, "KNOWS", None) path, = self.batch.submit() knows = path.relationships[0] bob = knows.end_node assert isinstance(knows, Relationship) assert knows.start_node == alice assert knows.type == "KNOWS" assert isinstance(bob, Node) self.recycling = [knows, alice, bob]