|
| 1 | +from django.db.models import Manager |
| 2 | +from django.db.models.query import QuerySet |
| 3 | + |
| 4 | +from graphene.contrib.django import DjangoNode |
| 5 | +from graphene.contrib.django.resolvers import SimpleQuerySetConnectionResolver |
| 6 | +from graphene.contrib.django.tests.models import Reporter |
| 7 | + |
| 8 | + |
| 9 | +class ReporterNode(DjangoNode): |
| 10 | + class Meta: |
| 11 | + model = Reporter |
| 12 | + |
| 13 | + |
| 14 | +def test_simple_resolve(): |
| 15 | + reporter = Reporter(id=1, first_name='Cookie Monster') |
| 16 | + resolver = SimpleQuerySetConnectionResolver(ReporterNode, on='articles') |
| 17 | + resolved = resolver(inst=reporter, args={}, info=None) |
| 18 | + assert isinstance(resolved, QuerySet), 'Did not resolve to a queryset' |
| 19 | + |
| 20 | + |
| 21 | +def test_simple_get_manager_related(): |
| 22 | + reporter = Reporter(id=1, first_name='Cookie Monster') |
| 23 | + resolver = SimpleQuerySetConnectionResolver(ReporterNode, on='articles') |
| 24 | + resolver(inst=reporter, args={}, info=None) |
| 25 | + assert resolver.get_manager().instance == reporter, 'Resolver did not return a RelatedManager' |
| 26 | + |
| 27 | + |
| 28 | +def test_simple_get_manager_all(): |
| 29 | + reporter = Reporter(id=1, first_name='Cookie Monster') |
| 30 | + resolver = SimpleQuerySetConnectionResolver(ReporterNode) |
| 31 | + resolver(inst=reporter, args={}, info=None) |
| 32 | + assert type(resolver.get_manager()) == Manager, 'Resolver did not return a Manager' |
| 33 | + |
| 34 | + |
| 35 | +def test_simple_filter(): |
| 36 | + reporter = Reporter(id=1, first_name='Cookie Monster') |
| 37 | + resolver = SimpleQuerySetConnectionResolver(ReporterNode) |
| 38 | + resolved = resolver(inst=reporter, args={ |
| 39 | + 'first_name': 'Elmo' |
| 40 | + }, info=None) |
| 41 | + assert '"first_name" = Elmo' in str(resolved.query) |
| 42 | + assert 'ORDER BY' not in str(resolved.query) |
| 43 | + |
| 44 | + |
| 45 | +def test_simple_order(): |
| 46 | + reporter = Reporter(id=1, first_name='Cookie Monster') |
| 47 | + resolver = SimpleQuerySetConnectionResolver(ReporterNode) |
| 48 | + resolved = resolver(inst=reporter, args={ |
| 49 | + 'order': 'last_name' |
| 50 | + }, info=None) |
| 51 | + assert 'WHERE' not in str(resolved.query) |
| 52 | + assert 'ORDER BY' in str(resolved.query) |
| 53 | + assert '"last_name" ASC' in str(resolved.query) |
0 commit comments