graphene-django/graphene_django/tests/test_registry.py

65 lines
2.0 KiB
Python

from pytest import raises
from ..registry import Registry, get_global_registry, reset_global_registry
from ..types import DjangoObjectType
from .models import Reporter as ReporterModel
def setup_function(function):
reset_global_registry()
def test_registry_basic():
global_registry = get_global_registry()
class Reporter(DjangoObjectType):
'''Reporter description'''
class Meta:
model = ReporterModel
assert Reporter._meta.registry == global_registry
assert global_registry.get_unique_type_for_model(ReporterModel) == Reporter
def test_registry_multiple_types():
global_registry = get_global_registry()
class Reporter(DjangoObjectType):
'''Reporter description'''
class Meta:
model = ReporterModel
class Reporter2(DjangoObjectType):
'''Reporter2 description'''
class Meta:
model = ReporterModel
assert global_registry.get_types_for_model(ReporterModel) == [Reporter, Reporter2]
with raises(Exception) as exc_info:
global_registry.get_unique_type_for_model(ReporterModel) == [Reporter, Reporter2]
assert str(exc_info.value) == (
'Found multiple ObjectTypes associated with the same '
'Django Model "tests.Reporter": {}. You can use a different '
'registry for each or skip the global Registry with '
'Meta.skip_global_registry = True". '
'Read more at http://docs.graphene-python.org/projects/django/en/latest/registry/ .'
).format(repr([Reporter, Reporter2]))
def test_registry_multiple_types_dont_collision_if_skip_global_registry():
class Reporter(DjangoObjectType):
'''Reporter description'''
class Meta:
model = ReporterModel
class Reporter2(DjangoObjectType):
'''Reporter2 description'''
class Meta:
model = ReporterModel
skip_global_registry = True
assert Reporter._meta.registry != Reporter2._meta.registry
assert Reporter2._meta.registry != get_global_registry()