Skip to content

Commit 51f794e

Browse files
author
=
committed
Test Connectionfield with custom Manager
1 parent 616c549 commit 51f794e

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

graphene_django/tests/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,18 @@ class Film(models.Model):
2222
reporters = models.ManyToManyField('Reporter',
2323
related_name='films')
2424

25+
class DoeReporterManager(models.Manager):
26+
def get_queryset(self):
27+
return super(DoeReporterManager, self).get_queryset().filter(last_name="Doe")
2528

2629
class Reporter(models.Model):
2730
first_name = models.CharField(max_length=30)
2831
last_name = models.CharField(max_length=30)
2932
email = models.EmailField()
3033
pets = models.ManyToManyField('self')
3134
a_choice = models.CharField(max_length=30, choices=CHOICES)
35+
objects = models.Manager()
36+
doe_objects = DoeReporterManager()
3237

3338
def __str__(self): # __unicode__ on Python 2
3439
return "%s %s" % (self.first_name, self.last_name)

graphene_django/tests/test_query.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,61 @@ def resolve_all_reporters(self, info, **args):
743743
assert not result.errors
744744
assert result.data == expected
745745

746+
def test_should_query_connectionfields_with_manager():
747+
748+
r = Reporter.objects.create(
749+
first_name='John',
750+
last_name='Doe',
751+
email='johndoe@example.com',
752+
a_choice=1
753+
)
754+
755+
r = Reporter.objects.create(
756+
first_name='John',
757+
last_name='NotDoe',
758+
email='johndoe@example.com',
759+
a_choice=1
760+
)
761+
762+
class ReporterType(DjangoObjectType):
763+
764+
class Meta:
765+
model = Reporter
766+
interfaces = (Node, )
767+
768+
class Query(graphene.ObjectType):
769+
all_reporters = DjangoConnectionField(ReporterType, on='doe_objects')
770+
771+
def resolve_all_reporters(self, info, **args):
772+
return Reporter.objects.all()
773+
774+
schema = graphene.Schema(query=Query)
775+
query = '''
776+
query ReporterLastQuery {
777+
allReporters(first: 2) {
778+
edges {
779+
node {
780+
id
781+
}
782+
}
783+
}
784+
}
785+
'''
786+
787+
expected = {
788+
'allReporters': {
789+
'edges': [{
790+
'node': {
791+
'id': 'UmVwb3J0ZXJUeXBlOjE='
792+
}
793+
}]
794+
}
795+
}
796+
797+
result = schema.execute(query)
798+
assert not result.errors
799+
assert result.data == expected
800+
746801

747802
def test_should_query_dataloader_fields():
748803
from promise import Promise

0 commit comments

Comments
 (0)