mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-12-09 11:14:19 +03:00
65 lines
2.0 KiB
Python
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()
|