Fix unit tests
This commit is contained in:
parent
f4270b8243
commit
de62252824
|
|
@ -13,6 +13,7 @@ from graphql_relay import to_global_id
|
||||||
from api.test_utils import create_client, DefaultUserTestCase
|
from api.test_utils import create_client, DefaultUserTestCase
|
||||||
from assignments.models import Assignment, StudentSubmission
|
from assignments.models import Assignment, StudentSubmission
|
||||||
from users.factories import SchoolClassFactory
|
from users.factories import SchoolClassFactory
|
||||||
|
from users.models import SchoolClassMember
|
||||||
from ..factories import AssignmentFactory, StudentSubmissionFactory, SubmissionFeedbackFactory
|
from ..factories import AssignmentFactory, StudentSubmissionFactory, SubmissionFeedbackFactory
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -25,13 +26,16 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
)
|
)
|
||||||
self.assignment_id = to_global_id('AssignmentNode', self.assignment.pk)
|
self.assignment_id = to_global_id('AssignmentNode', self.assignment.pk)
|
||||||
|
|
||||||
self.student_submission = StudentSubmissionFactory(assignment=self.assignment, student=self.student1, final=False)
|
self.student_submission = StudentSubmissionFactory(assignment=self.assignment, student=self.student1,
|
||||||
|
final=False)
|
||||||
self.student_submission_id = to_global_id('StudentSubmissionNode', self.student_submission.pk)
|
self.student_submission_id = to_global_id('StudentSubmissionNode', self.student_submission.pk)
|
||||||
|
|
||||||
school_class = SchoolClassFactory()
|
school_class = SchoolClassFactory()
|
||||||
school_class.users.add(self.student1)
|
for user in [self.student1, self.teacher, self.teacher2]:
|
||||||
school_class.users.add(self.teacher)
|
SchoolClassMember.objects.create(
|
||||||
school_class.users.add(self.teacher2)
|
user=user,
|
||||||
|
school_class=school_class
|
||||||
|
)
|
||||||
|
|
||||||
def _create_submission_feedback(self, user, final, text, student_submission_id):
|
def _create_submission_feedback(self, user, final, text, student_submission_id):
|
||||||
mutation = '''
|
mutation = '''
|
||||||
|
|
@ -122,19 +126,17 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_teacher_can_create_feedback(self):
|
def test_teacher_can_create_feedback(self):
|
||||||
|
|
||||||
result = self._create_submission_feedback(self.teacher, False, 'Balalal', self.student_submission_id)
|
result = self._create_submission_feedback(self.teacher, False, 'Balalal', self.student_submission_id)
|
||||||
|
|
||||||
self.assertIsNone(result.get('errors'))
|
self.assertIsNone(result.get('errors'))
|
||||||
self.assertIsNotNone(result.get('data').get('updateSubmissionFeedback').get('updatedSubmissionFeedback').get('id'))
|
self.assertIsNotNone(
|
||||||
|
result.get('data').get('updateSubmissionFeedback').get('updatedSubmissionFeedback').get('id'))
|
||||||
|
|
||||||
def test_student_cannot_create_feedback(self):
|
def test_student_cannot_create_feedback(self):
|
||||||
|
|
||||||
result = self._create_submission_feedback(self.student1, False, 'Balalal', self.student_submission_id)
|
result = self._create_submission_feedback(self.student1, False, 'Balalal', self.student_submission_id)
|
||||||
self.assertIsNotNone(result.get('errors'))
|
self.assertIsNotNone(result.get('errors'))
|
||||||
|
|
||||||
def test_teacher_can_update_feedback(self):
|
def test_teacher_can_update_feedback(self):
|
||||||
|
|
||||||
assignment = AssignmentFactory(
|
assignment = AssignmentFactory(
|
||||||
owner=self.teacher
|
owner=self.teacher
|
||||||
)
|
)
|
||||||
|
|
@ -148,13 +150,13 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
|
|
||||||
self.assertIsNone(result.get('errors'))
|
self.assertIsNone(result.get('errors'))
|
||||||
|
|
||||||
submission_feedback_response = result.get('data').get('updateSubmissionFeedback').get('updatedSubmissionFeedback')
|
submission_feedback_response = result.get('data').get('updateSubmissionFeedback').get(
|
||||||
|
'updatedSubmissionFeedback')
|
||||||
|
|
||||||
self.assertTrue(submission_feedback_response.get('final'))
|
self.assertTrue(submission_feedback_response.get('final'))
|
||||||
self.assertEqual(submission_feedback_response.get('text'), 'Some')
|
self.assertEqual(submission_feedback_response.get('text'), 'Some')
|
||||||
|
|
||||||
def test_rogue_teacher_cannot_update_feedback(self):
|
def test_rogue_teacher_cannot_update_feedback(self):
|
||||||
|
|
||||||
assignment = AssignmentFactory(
|
assignment = AssignmentFactory(
|
||||||
owner=self.teacher
|
owner=self.teacher
|
||||||
)
|
)
|
||||||
|
|
@ -169,14 +171,12 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
self.assertIsNotNone(result.get('errors'))
|
self.assertIsNotNone(result.get('errors'))
|
||||||
|
|
||||||
def test_student_does_not_see_non_final_feedback(self):
|
def test_student_does_not_see_non_final_feedback(self):
|
||||||
|
|
||||||
SubmissionFeedbackFactory(teacher=self.teacher, final=False, student_submission=self.student_submission)
|
SubmissionFeedbackFactory(teacher=self.teacher, final=False, student_submission=self.student_submission)
|
||||||
result = self._fetch_assignment_student(self.student1)
|
result = self._fetch_assignment_student(self.student1)
|
||||||
|
|
||||||
self.assertIsNone(result.get('data').get('submissionFeedback'))
|
self.assertIsNone(result.get('data').get('submissionFeedback'))
|
||||||
|
|
||||||
def test_student_does_see_final_feedback(self):
|
def test_student_does_see_final_feedback(self):
|
||||||
|
|
||||||
submission_feedback = SubmissionFeedbackFactory(teacher=self.teacher, final=True,
|
submission_feedback = SubmissionFeedbackFactory(teacher=self.teacher, final=True,
|
||||||
student_submission=self.student_submission)
|
student_submission=self.student_submission)
|
||||||
result = self._fetch_assignment_student(self.student1)
|
result = self._fetch_assignment_student(self.student1)
|
||||||
|
|
@ -195,7 +195,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
|
|
||||||
def test_rogue_teacher_cannot_see_feedback(self):
|
def test_rogue_teacher_cannot_see_feedback(self):
|
||||||
SubmissionFeedbackFactory(teacher=self.teacher, final=False,
|
SubmissionFeedbackFactory(teacher=self.teacher, final=False,
|
||||||
student_submission=self.student_submission)
|
student_submission=self.student_submission)
|
||||||
self.student_submission.final = True
|
self.student_submission.final = True
|
||||||
self.student_submission.save()
|
self.student_submission.save()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import os
|
||||||
import requests
|
import requests
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from users.models import User, SchoolClass, Role, UserRole
|
from users.models import User, SchoolClass, Role, UserRole, SchoolClassMember
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
|
|
@ -40,7 +40,10 @@ class Command(BaseCommand):
|
||||||
self.stdout.write("Adding to class(es) {}".format(', '.join(school_class_names)))
|
self.stdout.write("Adding to class(es) {}".format(', '.join(school_class_names)))
|
||||||
for school_class_name in school_class_names:
|
for school_class_name in school_class_names:
|
||||||
school, _ = SchoolClass.objects.get_or_create(name=school_class_name)
|
school, _ = SchoolClass.objects.get_or_create(name=school_class_name)
|
||||||
user.school_classes.add(school)
|
SchoolClassMember.objects.create(
|
||||||
|
school_class=school,
|
||||||
|
user=user
|
||||||
|
)
|
||||||
|
|
||||||
self.stdout.write("")
|
self.stdout.write("")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from graphene import relay
|
||||||
from core.views import SetPasswordView
|
from core.views import SetPasswordView
|
||||||
from registration.models import License
|
from registration.models import License
|
||||||
from registration.serializers import RegistrationSerializer
|
from registration.serializers import RegistrationSerializer
|
||||||
from users.models import User, Role, UserRole, SchoolClass
|
from users.models import User, Role, UserRole, SchoolClass, SchoolClassMember
|
||||||
|
|
||||||
|
|
||||||
class PublicFieldError(graphene.ObjectType):
|
class PublicFieldError(graphene.ObjectType):
|
||||||
|
|
@ -61,7 +61,10 @@ class Registration(relay.ClientIDMutation):
|
||||||
UserRole.objects.get_or_create(user=user, role=teacher_role)
|
UserRole.objects.get_or_create(user=user, role=teacher_role)
|
||||||
default_class_name = SchoolClass.generate_default_group_name()
|
default_class_name = SchoolClass.generate_default_group_name()
|
||||||
default_class = SchoolClass.objects.create(name=default_class_name)
|
default_class = SchoolClass.objects.create(name=default_class_name)
|
||||||
user.school_classes.add(default_class)
|
SchoolClassMember.objects.create(
|
||||||
|
user=user,
|
||||||
|
school_class=default_class
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
student_role = Role.objects.get(key=Role.objects.STUDENT_KEY)
|
student_role = Role.objects.get(key=Role.objects.STUDENT_KEY)
|
||||||
UserRole.objects.get_or_create(user=user, role=student_role)
|
UserRole.objects.get_or_create(user=user, role=student_role)
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,10 @@ class JoinClass(relay.ClientIDMutation):
|
||||||
school_class = SchoolClass.objects.get(Q(code__iexact=code))
|
school_class = SchoolClass.objects.get(Q(code__iexact=code))
|
||||||
|
|
||||||
if user not in list(school_class.users.all()):
|
if user not in list(school_class.users.all()):
|
||||||
school_class.users.add(user)
|
SchoolClassMember.objects.create(
|
||||||
|
user=user,
|
||||||
|
school_class=school_class
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
raise CodeNotFoundException('[CAJ] Schüler ist bereits in Klasse') # CAJ = Class Already Joined
|
raise CodeNotFoundException('[CAJ] Schüler ist bereits in Klasse') # CAJ = Class Already Joined
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from graphene.test import Client
|
||||||
|
|
||||||
from core.factories import UserFactory
|
from core.factories import UserFactory
|
||||||
from users.factories import SchoolClassFactory
|
from users.factories import SchoolClassFactory
|
||||||
from users.models import SchoolClass
|
from users.models import SchoolClass, SchoolClassMember
|
||||||
from api.schema import schema
|
from api.schema import schema
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -45,7 +45,10 @@ class JoinSchoolClassTest(TestCase):
|
||||||
def test_class_already_joined(self):
|
def test_class_already_joined(self):
|
||||||
code = 'YYYY'
|
code = 'YYYY'
|
||||||
school_class = SchoolClass.objects.get(code=code)
|
school_class = SchoolClass.objects.get(code=code)
|
||||||
school_class.users.add(self.user)
|
SchoolClassMember.objects.create(
|
||||||
|
user=self.user,
|
||||||
|
school_class=school_class
|
||||||
|
)
|
||||||
|
|
||||||
self.assertEqual(self.user.school_classes.count(), 2)
|
self.assertEqual(self.user.school_classes.count(), 2)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue