Add initial tests for assignment
This commit is contained in:
parent
95545904a6
commit
8dc5d7dfaf
|
|
@ -0,0 +1,16 @@
|
||||||
|
import random
|
||||||
|
|
||||||
|
import factory
|
||||||
|
|
||||||
|
from books.factories import ModuleFactory
|
||||||
|
from .models import Assignment
|
||||||
|
|
||||||
|
from core.factories import fake
|
||||||
|
|
||||||
|
class AssignmentFactory(factory.django.DjangoModelFactory):
|
||||||
|
class Meta:
|
||||||
|
model = Assignment
|
||||||
|
|
||||||
|
title = factory.LazyAttribute(lambda x: fake.sentence(nb_words=random.randint(4, 8)))
|
||||||
|
assignment = factory.LazyAttribute(lambda x: fake.sentence(nb_words=random.randint(4, 8)))
|
||||||
|
module = factory.SubFactory(ModuleFactory)
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from django.test import RequestFactory
|
||||||
|
from graphene.test import Client
|
||||||
|
from graphql_relay import to_global_id
|
||||||
|
|
||||||
|
from api.utils import get_graphql_mutation
|
||||||
|
from assignments.models import Assignment, StudentSubmission
|
||||||
|
from books.factories import ModuleFactory
|
||||||
|
from ..factories import AssignmentFactory
|
||||||
|
from users.models import User
|
||||||
|
from users.services import create_users
|
||||||
|
from api.schema import schema
|
||||||
|
|
||||||
|
|
||||||
|
class AssignmentPermissionsTestCase(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
create_users()
|
||||||
|
|
||||||
|
self.teacher = User.objects.get(username='teacher')
|
||||||
|
self.teacher2 = User.objects.get(username='teacher2')
|
||||||
|
self.student1 = User.objects.get(username='student1')
|
||||||
|
self.student2 = User.objects.get(username='student2')
|
||||||
|
self.assignment = AssignmentFactory(
|
||||||
|
owner=self.teacher
|
||||||
|
)
|
||||||
|
|
||||||
|
request = RequestFactory().get('/')
|
||||||
|
request.user = self.student1
|
||||||
|
self.client = Client(schema=schema, context_value=request)
|
||||||
|
|
||||||
|
"""
|
||||||
|
to test:
|
||||||
|
create assignment
|
||||||
|
should be visible to teachers
|
||||||
|
should be visible to students
|
||||||
|
student1 submits result
|
||||||
|
teacher1 should see result
|
||||||
|
student1 should see result
|
||||||
|
student2 should not see result
|
||||||
|
teacher2 should not see result
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_count(self):
|
||||||
|
self.assertEqual(Assignment.objects.count(), 1)
|
||||||
|
|
||||||
|
def test_submit_submission(self):
|
||||||
|
"""
|
||||||
|
id = graphene.ID(required=True)
|
||||||
|
answer = graphene.String(required=True)
|
||||||
|
document = graphene.String()
|
||||||
|
final = graphene.Boolean()
|
||||||
|
"""
|
||||||
|
|
||||||
|
id = to_global_id('Assignment', self.assignment.pk)
|
||||||
|
|
||||||
|
mutation = '''
|
||||||
|
mutation UpdateAssignment($input: UpdateAssignmentInput!) {
|
||||||
|
updateAssignment(input: $input){
|
||||||
|
updatedAssignment {
|
||||||
|
id
|
||||||
|
title
|
||||||
|
assignment
|
||||||
|
submission {
|
||||||
|
id
|
||||||
|
text
|
||||||
|
final
|
||||||
|
document
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
result = self.client.execute(mutation, variables={
|
||||||
|
'input': {
|
||||||
|
"assignment": {
|
||||||
|
"id": id,
|
||||||
|
"answer": 'Halo',
|
||||||
|
"final": True
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
self.assertIsNone(result.get('errors'))
|
||||||
|
self.assertEqual(StudentSubmission.objects.count(), 1)
|
||||||
|
|
@ -33,20 +33,13 @@ class RoleManager(models.Manager):
|
||||||
|
|
||||||
def create_default_roles(self):
|
def create_default_roles(self):
|
||||||
for key, value in self.DEFAULT_ROLES.items():
|
for key, value in self.DEFAULT_ROLES.items():
|
||||||
role = self.create(name=value, key=key)
|
role, created = self.get_or_create(name=value, key=key)
|
||||||
role.save()
|
|
||||||
|
|
||||||
can_manage_school_class_content, = self._create_default_permissions()
|
can_manage_school_class_content, = self._create_default_permissions()
|
||||||
|
|
||||||
if key == "teacher":
|
if key == "teacher":
|
||||||
role.role_permission.add(can_manage_school_class_content.id)
|
role.role_permission.add(can_manage_school_class_content.id)
|
||||||
|
|
||||||
# elif key == "school_admin":
|
|
||||||
# role.role_permission.add()
|
|
||||||
#
|
|
||||||
# elif key == "student":
|
|
||||||
# role.role_permission.add()
|
|
||||||
|
|
||||||
def get_default_teacher_role(self):
|
def get_default_teacher_role(self):
|
||||||
return self._get_default_role(self.TEACHER_KEY)
|
return self._get_default_role(self.TEACHER_KEY)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,26 @@ def create_users(data=None):
|
||||||
teacher = UserFactory(username='teacher')
|
teacher = UserFactory(username='teacher')
|
||||||
UserRole.objects.create(user=teacher, role=teacher_role)
|
UserRole.objects.create(user=teacher, role=teacher_role)
|
||||||
|
|
||||||
|
students = []
|
||||||
for i in range(1, 7):
|
for i in range(1, 7):
|
||||||
student = UserFactory(username='student{}'.format(i))
|
student = UserFactory(username='student{}'.format(i))
|
||||||
UserRole.objects.create(user=student, role=student_role)
|
UserRole.objects.create(user=student, role=student_role)
|
||||||
SchoolClassFactory(users=[teacher, student])
|
students.append(student)
|
||||||
|
|
||||||
|
SchoolClassFactory(
|
||||||
|
users=[teacher] + students,
|
||||||
|
year='2018',
|
||||||
|
name='skillbox'
|
||||||
|
)
|
||||||
|
teacher2 = UserFactory(username='teacher2')
|
||||||
|
SchoolClassFactory(
|
||||||
|
users=[teacher2],
|
||||||
|
year='2018',
|
||||||
|
name='second_class'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
for school_class in data:
|
for school_class in data:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue