Add tests to DataLoaderField

This commit is contained in:
Olivia Rodriguez Valdes 2019-04-10 11:28:40 -04:00
parent ee50031cf6
commit 581dbe7416

View File

@ -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)