Example #1
0
class TestLoadUnique(object):
    @pytest.fixture(autouse=True)
    def setup(self, graph):
        self.graph = graph
        try:
            self.graph.legacy.delete_index(Node, "People")
        except LookupError:
            pass
        self.graph.legacy.get_or_create_index(Node, "People")
        self.store = Store(self.graph)

    def test_can_load_simple_object(self):
        alice_node = self.graph.legacy.get_or_create_indexed_node(
            "People", "email", "*****@*****.**", {
                "email": "*****@*****.**",
                "name": "Alice Allison",
                "age": 34,
            })
        alice = self.store.load_unique("People", "email", "*****@*****.**",
                                       Person)
        assert isinstance(alice, Person)
        assert hasattr(alice, "__node__")
        assert alice.__node__ == alice_node
        assert hasattr(alice, "__rel__")
        assert alice.__rel__ == {}
        assert alice.email == "*****@*****.**"
        assert alice.name == "Alice Allison"
        assert alice.age == 34

    def test_can_load_object_with_relationships(self):
        alice_node = self.graph.legacy.get_or_create_indexed_node(
            "People", "email", "*****@*****.**", {
                "email": "*****@*****.**",
                "name": "Alice Allison",
                "age": 34,
            })
        path = alice_node.create_path("LIKES", {"name": "Bob Robertson"})
        bob_node = path.nodes[1]
        alice = self.store.load_unique("People", "email", "*****@*****.**",
                                       Person)
        assert isinstance(alice, Person)
        assert hasattr(alice, "__node__")
        assert alice.__node__ == alice_node
        assert hasattr(alice, "__rel__")
        assert alice.__rel__ == {
            "LIKES": [({}, bob_node)],
        }
        assert alice.email == "*****@*****.**"
        assert alice.name == "Alice Allison"
        assert alice.age == 34
        friends = self.store.load_related(alice, "LIKES", Person)
        assert isinstance(friends, list)
        assert len(friends) == 1
        friend = friends[0]
        assert isinstance(friend, Person)
        assert friend.__node__ == bob_node
        enemies = self.store.load_related(alice, "DISLIKES", Person)
        assert isinstance(enemies, list)
        assert len(enemies) == 0

    def test_will_not_load_when_none_exists(self):
        alice = self.store.load_unique("People", "email", "*****@*****.**",
                                       Person)
        assert alice is None
Example #2
0
class TestLoadUnique(object):

    @pytest.fixture(autouse=True)
    def setup(self, graph):
        self.graph = graph
        try:
            self.graph.legacy.delete_index(Node, "People")
        except LookupError:
            pass
        self.graph.legacy.get_or_create_index(Node, "People")
        self.store = Store(self.graph)

    def test_can_load_simple_object(self):
        alice_node = self.graph.legacy.get_or_create_indexed_node(
            "People", "email", "*****@*****.**", {
                "email": "*****@*****.**",
                "name": "Alice Allison",
                "age": 34,
            }
        )
        alice = self.store.load_unique("People", "email", "*****@*****.**", Person)
        assert isinstance(alice, Person)
        assert hasattr(alice, "__node__")
        assert alice.__node__ == alice_node
        assert hasattr(alice, "__rel__")
        assert alice.__rel__ == {}
        assert alice.email == "*****@*****.**"
        assert alice.name == "Alice Allison"
        assert alice.age == 34

    def test_can_load_object_with_relationships(self):
        alice_node = self.graph.legacy.get_or_create_indexed_node(
            "People", "email", "*****@*****.**", {
                "email": "*****@*****.**",
                "name": "Alice Allison",
                "age": 34,
            }
        )
        path = alice_node.create_path("LIKES", {"name": "Bob Robertson"})
        bob_node = path.nodes[1]
        alice = self.store.load_unique("People", "email", "*****@*****.**", Person)
        assert isinstance(alice, Person)
        assert hasattr(alice, "__node__")
        assert alice.__node__ == alice_node
        assert hasattr(alice, "__rel__")
        assert alice.__rel__ == {
            "LIKES": [({}, bob_node)],
        }
        assert alice.email == "*****@*****.**"
        assert alice.name == "Alice Allison"
        assert alice.age == 34
        friends = self.store.load_related(alice, "LIKES", Person)
        assert isinstance(friends, list)
        assert len(friends) == 1
        friend = friends[0]
        assert isinstance(friend, Person)
        assert friend.__node__ == bob_node
        enemies = self.store.load_related(alice, "DISLIKES", Person)
        assert isinstance(enemies, list)
        assert len(enemies) == 0

    def test_will_not_load_when_none_exists(self):
        alice = self.store.load_unique("People", "email", "*****@*****.**", Person)
        assert alice is None