Add custom assignment test base

This commit is contained in:
Ramon Wenger 2018-10-18 16:28:06 +02:00
parent 5daeefbcec
commit 9edbcf3d56
2 changed files with 108 additions and 1 deletions

View File

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

View File

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