Add basic test for new visibility feature
This commit is contained in:
parent
c002b15ec6
commit
a1490c6049
|
|
@ -199,7 +199,7 @@ class TopicNode(DjangoObjectType):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Topic
|
model = Topic
|
||||||
only_fields = [
|
only_fields = [
|
||||||
'slug', 'title', 'meta_title', 'teaser', 'description', 'vimeo_id', 'order', 'instructions'
|
'slug', 'title', 'teaser', 'description', 'vimeo_id', 'order', 'instructions'
|
||||||
]
|
]
|
||||||
filter_fields = {
|
filter_fields = {
|
||||||
'slug': ['exact', 'icontains', 'in'],
|
'slug': ['exact', 'icontains', 'in'],
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from django.test import TestCase, RequestFactory
|
||||||
|
from graphene.test import Client
|
||||||
|
from graphql_relay import to_global_id
|
||||||
|
|
||||||
|
from api.schema import schema
|
||||||
|
from books.models import ContentBlock, Chapter
|
||||||
|
from books.factories import ModuleFactory
|
||||||
|
from users.factories import SchoolClassFactory
|
||||||
|
from users.models import User
|
||||||
|
from users.services import create_users
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class CopyVisibilityForClassesTestCase(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
module = ModuleFactory()
|
||||||
|
chapter = Chapter(title='Some Chapter')
|
||||||
|
module.add_child(instance=chapter)
|
||||||
|
create_users()
|
||||||
|
teacher = User.objects.get(username='teacher')
|
||||||
|
student1 = User.objects.get(username='student1')
|
||||||
|
student2 = User.objects.get(username='student2')
|
||||||
|
school_class1 = SchoolClassFactory(name='hidden-class', users=[teacher, student1])
|
||||||
|
school_class2 = SchoolClassFactory(name='default-class', users=[teacher, student2])
|
||||||
|
|
||||||
|
default_content_block = ContentBlock(title='default block', slug='default')
|
||||||
|
hidden_content_block = ContentBlock(title='hidden block', slug='hidden')
|
||||||
|
|
||||||
|
chapter.specific.add_child(instance=default_content_block)
|
||||||
|
chapter.specific.add_child(instance=hidden_content_block)
|
||||||
|
|
||||||
|
hidden_content_block.hidden_for.add(school_class1)
|
||||||
|
|
||||||
|
teacher_request = RequestFactory().get('/')
|
||||||
|
teacher_request.user = teacher
|
||||||
|
self.teacher_client = Client(schema=schema, context_value=teacher_request)
|
||||||
|
|
||||||
|
student1_request = RequestFactory().get('/')
|
||||||
|
student1_request.user = student1
|
||||||
|
self.student1_client = Client(schema=schema, context_value=student1_request)
|
||||||
|
|
||||||
|
student2_request = RequestFactory().get('/')
|
||||||
|
student2_request.user = student2
|
||||||
|
self.student2_client = Client(schema=schema, context_value=student2_request)
|
||||||
|
|
||||||
|
self.chapter = to_global_id('ChapterNode', chapter.pk)
|
||||||
|
self.default_content_block = to_global_id('ContentBlockNode', default_content_block.pk)
|
||||||
|
self.hidden_content_block = to_global_id('ContentBlockNode', hidden_content_block.pk)
|
||||||
|
|
||||||
|
def _get_result(self, query, client, id):
|
||||||
|
result = client.execute(query, variables={
|
||||||
|
'id': id
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
|
||||||
|
def test_hidden_for_set_correctly(self):
|
||||||
|
self.assertEqual(ContentBlock.objects.count(), 2)
|
||||||
|
|
||||||
|
query = """
|
||||||
|
query ContentBlockQuery($id: ID!) {
|
||||||
|
contentBlock(id: $id) {
|
||||||
|
hiddenFor {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
result = self._get_result(query, self.teacher_client, self.hidden_content_block)
|
||||||
|
logger.info(result)
|
||||||
|
hiddenFor = result.get('data').get('contentBlock').get('hiddenFor').get('edges')
|
||||||
|
logger.info(hiddenFor)
|
||||||
|
self.assertTrue('hidden-class' in map(lambda x: x['node']['name'], hiddenFor))
|
||||||
|
self.assertFalse('default-class' in map(lambda x: x['node']['name'], hiddenFor))
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -335,6 +335,11 @@ LOGGING = {
|
||||||
'level': 'WARNING',
|
'level': 'WARNING',
|
||||||
'propagate': True,
|
'propagate': True,
|
||||||
},
|
},
|
||||||
|
'wagtail': {
|
||||||
|
'handlers': ['console'],
|
||||||
|
'level': 'WARNING',
|
||||||
|
'propagate': False,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue