mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-04-25 19:43:51 +03:00
Add tests to DataLoaderField
This commit is contained in:
parent
ee50031cf6
commit
581dbe7416
|
@ -1,15 +1,26 @@
|
|||
from mock import mock
|
||||
from unittest import TestCase
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from graphene_django.fields import DjangoField
|
||||
from graphene_django.fields import DjangoField, DataLoaderField
|
||||
from promise.dataloader import DataLoader
|
||||
from promise import Promise
|
||||
|
||||
|
||||
class MyInstance(object):
|
||||
value = "value"
|
||||
key = 1
|
||||
|
||||
def resolver(self):
|
||||
return "resolver method"
|
||||
|
||||
|
||||
def batch_load_fn(keys):
|
||||
return Promise.all(keys)
|
||||
|
||||
|
||||
data_loader = DataLoader(batch_load_fn=batch_load_fn)
|
||||
|
||||
|
||||
class PermissionFieldTests(TestCase):
|
||||
|
||||
def test_permission_field(self):
|
||||
|
@ -21,12 +32,9 @@ class PermissionFieldTests(TestCase):
|
|||
def has_perm(self, perm):
|
||||
return perm == 'perm2'
|
||||
|
||||
class Info(object):
|
||||
class Context(object):
|
||||
user = Viewer()
|
||||
context = Context()
|
||||
info = mock.Mock(context=mock.Mock(user=Viewer()))
|
||||
|
||||
self.assertEqual(resolver(MyInstance(), Info()), MyInstance().resolver())
|
||||
self.assertEqual(resolver(MyInstance(), info), MyInstance().resolver())
|
||||
|
||||
def test_permission_field_without_permission(self):
|
||||
MyType = object()
|
||||
|
@ -37,10 +45,51 @@ class PermissionFieldTests(TestCase):
|
|||
def has_perm(self, perm):
|
||||
return False
|
||||
|
||||
class Info(object):
|
||||
class Context(object):
|
||||
user = Viewer()
|
||||
context = Context()
|
||||
info = mock.Mock(context=mock.Mock(user=Viewer()))
|
||||
|
||||
with self.assertRaises(PermissionDenied):
|
||||
resolver(MyInstance(), Info())
|
||||
resolver(MyInstance(), info)
|
||||
|
||||
|
||||
class DataLoaderFieldTests(TestCase):
|
||||
|
||||
def test_dataloaderfield(self):
|
||||
MyType = object()
|
||||
data_loader_field = DataLoaderField(data_loader=data_loader, source_loader='key', type=MyType)
|
||||
|
||||
resolver = data_loader_field.get_resolver(None)
|
||||
instance = MyInstance()
|
||||
|
||||
self.assertEqual(resolver(instance, None).get(), instance.key)
|
||||
|
||||
def test_dataloaderfield_permissions(self):
|
||||
MyType = object()
|
||||
data_loader_field = DataLoaderField(data_loader=data_loader, source_loader='key', type=MyType,
|
||||
permissions=['perm1', 'perm2'])
|
||||
|
||||
resolver = data_loader_field.get_resolver(None)
|
||||
instance = MyInstance()
|
||||
|
||||
class Viewer(object):
|
||||
def has_perm(self, perm):
|
||||
return perm == 'perm2'
|
||||
|
||||
info = mock.Mock(context=mock.Mock(user=Viewer()))
|
||||
|
||||
self.assertEqual(resolver(instance, info).get(), instance.key)
|
||||
|
||||
def test_dataloaderfield_without_permissions(self):
|
||||
MyType = object()
|
||||
data_loader_field = DataLoaderField(data_loader=data_loader, source_loader='key', type=MyType,
|
||||
permissions=['perm1', 'perm2'])
|
||||
|
||||
resolver = data_loader_field.get_resolver(None)
|
||||
instance = MyInstance()
|
||||
|
||||
class Viewer(object):
|
||||
def has_perm(self, perm):
|
||||
return False
|
||||
|
||||
info = mock.Mock(context=mock.Mock(user=Viewer()))
|
||||
with self.assertRaises(PermissionDenied):
|
||||
resolver(instance, info)
|
||||
|
|
Loading…
Reference in New Issue
Block a user