-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathtest_registry.py
60 lines (42 loc) · 1.68 KB
/
test_registry.py
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
import pytest
from pydantic import BaseModel
import graphene_pydantic.registry as registry
from graphene_pydantic import PydanticInputObjectType, PydanticObjectType
from graphene_pydantic.registry import (
Registry,
assert_is_correct_type,
get_global_registry,
reset_global_registry,
)
def _get_dummy_classes():
class Foo(BaseModel):
name: str
class GraphFoo(PydanticObjectType):
class Meta:
model = Foo
return (Foo, GraphFoo)
def test_assert_is_correct_type():
Foo, GraphFoo = _get_dummy_classes()
with pytest.raises(TypeError) as exc:
assert_is_correct_type(Foo, PydanticObjectType)
assert_is_correct_type(GraphFoo, PydanticObjectType)
def test_get_global_registry():
assert isinstance(get_global_registry(PydanticObjectType), Registry)
def test_get_global_registry_for_input():
assert isinstance(get_global_registry(PydanticInputObjectType), Registry)
def test_reset_global_registry():
get_global_registry(PydanticInputObjectType)
assert registry.registry.get(PydanticInputObjectType) is not None
reset_global_registry(PydanticInputObjectType)
assert registry.registry.get(PydanticInputObjectType) is None
def test_register_and_get_type_for_model():
Foo, GraphFoo = _get_dummy_classes()
r = get_global_registry(PydanticObjectType)
r.register(GraphFoo)
assert r.get_type_for_model(Foo) is GraphFoo
def test_register_object_field_and_get_for_graphene_field():
Foo, GraphFoo = _get_dummy_classes()
r = get_global_registry(PydanticObjectType)
field = r.get_object_field_for_graphene_field(GraphFoo, "name")
assert field is not None
assert field.annotation == str