summaryrefslogtreecommitdiff
path: root/tests/test_graph_utils/test_edge.py
blob: 42358de19ac2048c711e6a56a83e9e3f0c32dda5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import pytest

from redis.commands.graph import edge, node


@pytest.mark.redismod
def test_init():

    with pytest.raises(AssertionError):
        edge.Edge(None, None, None)
        edge.Edge(node.Node(), None, None)
        edge.Edge(None, None, node.Node())

    assert isinstance(
        edge.Edge(node.Node(node_id=1), None, node.Node(node_id=2)), edge.Edge
    )


@pytest.mark.redismod
def test_toString():
    props_result = edge.Edge(
        node.Node(), None, node.Node(), properties={"a": "a", "b": 10}
    ).toString()
    assert props_result == '{a:"a",b:10}'

    no_props_result = edge.Edge(
        node.Node(), None, node.Node(), properties={}
    ).toString()
    assert no_props_result == ""


@pytest.mark.redismod
def test_stringify():
    john = node.Node(
        alias="a",
        label="person",
        properties={"name": "John Doe", "age": 33, "someArray": [1, 2, 3]},
    )
    japan = node.Node(alias="b", label="country", properties={"name": "Japan"})
    edge_with_relation = edge.Edge(
        john, "visited", japan, properties={"purpose": "pleasure"}
    )
    assert (
        '(a:person{age:33,name:"John Doe",someArray:[1, 2, 3]})'
        '-[:visited{purpose:"pleasure"}]->'
        '(b:country{name:"Japan"})' == str(edge_with_relation)
    )

    edge_no_relation_no_props = edge.Edge(japan, "", john)
    assert (
        '(b:country{name:"Japan"})'
        "-[]->"
        '(a:person{age:33,name:"John Doe",someArray:[1, 2, 3]})'
        == str(edge_no_relation_no_props)
    )

    edge_only_props = edge.Edge(john, "", japan, properties={"a": "b", "c": 3})
    assert (
        '(a:person{age:33,name:"John Doe",someArray:[1, 2, 3]})'
        '-[{a:"b",c:3}]->'
        '(b:country{name:"Japan"})' == str(edge_only_props)
    )


@pytest.mark.redismod
def test_comparision():
    node1 = node.Node(node_id=1)
    node2 = node.Node(node_id=2)
    node3 = node.Node(node_id=3)

    edge1 = edge.Edge(node1, None, node2)
    assert edge1 == edge.Edge(node1, None, node2)
    assert edge1 != edge.Edge(node1, "bla", node2)
    assert edge1 != edge.Edge(node1, None, node3)
    assert edge1 != edge.Edge(node3, None, node2)
    assert edge1 != edge.Edge(node2, None, node1)
    assert edge1 != edge.Edge(node1, None, node2, properties={"a": 10})