Add unit test
This commit is contained in:
parent
6f77603e11
commit
8765e849e3
|
|
@ -0,0 +1,73 @@
|
|||
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
|
||||
|
||||
|
||||
class ContentBlocksVisibleForTeachers(TestCase):
|
||||
def setUp(self):
|
||||
module = ModuleFactory()
|
||||
chapter = Chapter(title='Some Chapter')
|
||||
module.add_child(instance=chapter)
|
||||
create_users()
|
||||
teacher = User.objects.get(username='teacher')
|
||||
teacher2 = User.objects.get(username='teacher2')
|
||||
student = User.objects.get(username='student1')
|
||||
school_class = SchoolClassFactory(users=[teacher, teacher2, student])
|
||||
|
||||
default_content_block = ContentBlock(title='default block', slug='default')
|
||||
user_content_block = ContentBlock(title='user created', slug='user', user_created=True, owner=teacher)
|
||||
chapter.specific.add_child(instance=default_content_block)
|
||||
chapter.specific.add_child(instance=user_content_block)
|
||||
|
||||
user_content_block.visible_for.add(school_class)
|
||||
user_content_block.save()
|
||||
|
||||
|
||||
teacher_request = RequestFactory().get('/')
|
||||
teacher_request.user = teacher
|
||||
self.teacher_client = Client(schema=schema, context_value=teacher_request)
|
||||
|
||||
teacher2_request = RequestFactory().get('/')
|
||||
teacher2_request.user = teacher2
|
||||
self.teacher2_client = Client(schema=schema, context_value=teacher2_request)
|
||||
|
||||
student_request = RequestFactory().get('/')
|
||||
student_request.user = student
|
||||
self.student_client = Client(schema=schema, context_value=student_request)
|
||||
|
||||
self.chapter = to_global_id('ChapterNode', chapter.pk)
|
||||
|
||||
def _assert_school_classes(self, query, client):
|
||||
result = client.execute(query, variables={
|
||||
'id': self.chapter
|
||||
})
|
||||
self.assertIsNone(result.get('errors'))
|
||||
self.assertEqual(len(result.get('data').get('chapter').get('contentBlocks').get('edges')), 2)
|
||||
|
||||
def test_teacher_created_content_block(self):
|
||||
self.assertEqual(ContentBlock.objects.count(), 2)
|
||||
|
||||
query = """
|
||||
query ChapterQuery($id: ID!) {
|
||||
chapter(id: $id) {
|
||||
contentBlocks {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
self._assert_school_classes(query, self.student_client)
|
||||
self._assert_school_classes(query, self.teacher_client)
|
||||
self._assert_school_classes(query, self.teacher2_client)
|
||||
Loading…
Reference in New Issue