File: test_global_id.py

package info (click to toggle)
python-graphene 3.4.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,120 kB
  • sloc: python: 8,935; makefile: 214; sh: 18
file content (58 lines) | stat: -rw-r--r-- 1,566 bytes parent folder | download
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
from graphql_relay import to_global_id

from ...types import ID, NonNull, ObjectType, String
from ...types.definitions import GrapheneObjectType
from ..node import GlobalID, Node


class CustomNode(Node):
    class Meta:
        name = "Node"


class User(ObjectType):
    class Meta:
        interfaces = [CustomNode]

    name = String()


class Info:
    def __init__(self, parent_type):
        self.parent_type = GrapheneObjectType(
            graphene_type=parent_type,
            name=parent_type._meta.name,
            description=parent_type._meta.description,
            fields=None,
            is_type_of=parent_type.is_type_of,
            interfaces=None,
        )


def test_global_id_defaults_to_required_and_node():
    gid = GlobalID()
    assert isinstance(gid.type, NonNull)
    assert gid.type.of_type == ID
    assert gid.node == Node


def test_global_id_allows_overriding_of_node_and_required():
    gid = GlobalID(node=CustomNode, required=False)
    assert gid.type == ID
    assert gid.node == CustomNode


def test_global_id_defaults_to_info_parent_type():
    my_id = "1"
    gid = GlobalID()
    id_resolver = gid.wrap_resolve(lambda *_: my_id)
    my_global_id = id_resolver(None, Info(User))
    assert my_global_id == to_global_id(User._meta.name, my_id)


def test_global_id_allows_setting_customer_parent_type():
    my_id = "1"
    gid = GlobalID(parent_type=User)
    id_resolver = gid.wrap_resolve(lambda *_: my_id)
    my_global_id = id_resolver(None, None)
    assert my_global_id == to_global_id(User._meta.name, my_id)