Add custom assignment test base
This commit is contained in:
parent
5daeefbcec
commit
9edbcf3d56
|
|
@ -0,0 +1,107 @@
|
|||
import json
|
||||
|
||||
from django.test import TestCase, RequestFactory
|
||||
from graphene.test import Client
|
||||
|
||||
from api import schema
|
||||
from api.schema import schema
|
||||
from assignments.factories import AssignmentFactory
|
||||
from assignments.models import Assignment
|
||||
from books.factories import ModuleFactory
|
||||
from books.models import ContentBlock, Chapter
|
||||
from core.factories import UserFactory
|
||||
from users.models import User
|
||||
from users.services import create_users
|
||||
|
||||
|
||||
class CustomAssignmentTestCase(TestCase):
|
||||
def setUp(self):
|
||||
create_users()
|
||||
|
||||
self.teacher = User.objects.get(username='teacher')
|
||||
self.student1 = User.objects.get(username='student1')
|
||||
self.assignment = AssignmentFactory(
|
||||
owner=self.teacher,
|
||||
user_created=True
|
||||
)
|
||||
self.module = ModuleFactory()
|
||||
chapter = Chapter(slug='some-slug', title='chapter')
|
||||
self.module.add_child(instance=chapter)
|
||||
|
||||
self.content_block = ContentBlock(
|
||||
slug='slug',
|
||||
title='title'
|
||||
)
|
||||
|
||||
self.admin = UserFactory(
|
||||
username='test',
|
||||
is_staff=True,
|
||||
is_superuser=True,
|
||||
first_name='Nicol',
|
||||
last_name='Bolas'
|
||||
)
|
||||
|
||||
chapter.specific.add_child(instance=self.content_block)
|
||||
|
||||
request = RequestFactory().get('/')
|
||||
request.user = self.student1
|
||||
self.client = Client(schema=schema, context_value=request)
|
||||
|
||||
def query_module(self):
|
||||
query = '''
|
||||
query Module($slug: String!){
|
||||
module(slug: $slug) {
|
||||
id
|
||||
chapters {
|
||||
edges {
|
||||
node {
|
||||
contentBlocks {
|
||||
edges {
|
||||
node {
|
||||
contents
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'''
|
||||
|
||||
result = self.client.execute(query, variables={
|
||||
'slug': self.module.slug
|
||||
})
|
||||
|
||||
self.assertIsNone(result.get('errors'))
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def get_first_contents(result):
|
||||
return result.get('data').get('module').get('chapters').get('edges')[0].get('node').get('contentBlocks').get(
|
||||
'edges')[0].get('node').get('contents')
|
||||
|
||||
def test_module_query(self):
|
||||
result = self.query_module()
|
||||
contents = self.get_first_contents(result)
|
||||
self.assertIsNotNone(contents)
|
||||
|
||||
def test_global_assignment(self):
|
||||
title = 'Assignment'
|
||||
assignment = Assignment.objects.create(
|
||||
title=title,
|
||||
assignment='Assignment text',
|
||||
owner=self.admin,
|
||||
module=self.module
|
||||
)
|
||||
self.content_block.contents = json.dumps([
|
||||
{
|
||||
'type': 'assignment',
|
||||
'value': {
|
||||
'assignment_id': assignment.id
|
||||
}}
|
||||
])
|
||||
self.content_block.save()
|
||||
result = self.query_module()
|
||||
contents = self.get_first_contents(result)
|
||||
self.assertEqual(contents[0].get('value').get('title'), title)
|
||||
|
|
@ -3,7 +3,7 @@ from graphene.test import Client
|
|||
from graphql_relay import to_global_id
|
||||
|
||||
from api.schema import schema
|
||||
from api.utils import get_graphql_mutation, get_object
|
||||
from api.utils import get_object
|
||||
from books.factories import ContentBlockFactory, ModuleFactory
|
||||
from books.models import ContentBlock
|
||||
from core.factories import UserFactory
|
||||
|
|
|
|||
Loading…
Reference in New Issue