Fix unit tests

This commit is contained in:
Ramon Wenger 2020-03-05 16:54:56 +01:00
parent f4270b8243
commit de62252824
5 changed files with 32 additions and 20 deletions

View File

@ -13,6 +13,7 @@ from graphql_relay import to_global_id
from api.test_utils import create_client, DefaultUserTestCase
from assignments.models import Assignment, StudentSubmission
from users.factories import SchoolClassFactory
from users.models import SchoolClassMember
from ..factories import AssignmentFactory, StudentSubmissionFactory, SubmissionFeedbackFactory
@ -25,13 +26,16 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
)
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)
school_class = SchoolClassFactory()
school_class.users.add(self.student1)
school_class.users.add(self.teacher)
school_class.users.add(self.teacher2)
for user in [self.student1, self.teacher, self.teacher2]:
SchoolClassMember.objects.create(
user=user,
school_class=school_class
)
def _create_submission_feedback(self, user, final, text, student_submission_id):
mutation = '''
@ -122,19 +126,17 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
})
def test_teacher_can_create_feedback(self):
result = self._create_submission_feedback(self.teacher, False, 'Balalal', self.student_submission_id)
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):
result = self._create_submission_feedback(self.student1, False, 'Balalal', self.student_submission_id)
self.assertIsNotNone(result.get('errors'))
def test_teacher_can_update_feedback(self):
assignment = AssignmentFactory(
owner=self.teacher
)
@ -148,13 +150,13 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
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.assertEqual(submission_feedback_response.get('text'), 'Some')
def test_rogue_teacher_cannot_update_feedback(self):
assignment = AssignmentFactory(
owner=self.teacher
)
@ -169,14 +171,12 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
self.assertIsNotNone(result.get('errors'))
def test_student_does_not_see_non_final_feedback(self):
SubmissionFeedbackFactory(teacher=self.teacher, final=False, student_submission=self.student_submission)
result = self._fetch_assignment_student(self.student1)
self.assertIsNone(result.get('data').get('submissionFeedback'))
def test_student_does_see_final_feedback(self):
submission_feedback = SubmissionFeedbackFactory(teacher=self.teacher, final=True,
student_submission=self.student_submission)
result = self._fetch_assignment_student(self.student1)
@ -195,7 +195,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
def test_rogue_teacher_cannot_see_feedback(self):
SubmissionFeedbackFactory(teacher=self.teacher, final=False,
student_submission=self.student_submission)
student_submission=self.student_submission)
self.student_submission.final = True
self.student_submission.save()

View File

@ -5,7 +5,7 @@ import os
import requests
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):
@ -40,7 +40,10 @@ class Command(BaseCommand):
self.stdout.write("Adding to class(es) {}".format(', '.join(school_class_names)))
for school_class_name in school_class_names:
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("")

View File

@ -13,7 +13,7 @@ from graphene import relay
from core.views import SetPasswordView
from registration.models import License
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):
@ -61,7 +61,10 @@ class Registration(relay.ClientIDMutation):
UserRole.objects.get_or_create(user=user, role=teacher_role)
default_class_name = SchoolClass.generate_default_group_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:
student_role = Role.objects.get(key=Role.objects.STUDENT_KEY)
UserRole.objects.get_or_create(user=user, role=student_role)

View File

@ -124,7 +124,10 @@ class JoinClass(relay.ClientIDMutation):
school_class = SchoolClass.objects.get(Q(code__iexact=code))
if user not in list(school_class.users.all()):
school_class.users.add(user)
SchoolClassMember.objects.create(
user=user,
school_class=school_class
)
else:
raise CodeNotFoundException('[CAJ] Schüler ist bereits in Klasse') # CAJ = Class Already Joined

View File

@ -4,7 +4,7 @@ from graphene.test import Client
from core.factories import UserFactory
from users.factories import SchoolClassFactory
from users.models import SchoolClass
from users.models import SchoolClass, SchoolClassMember
from api.schema import schema
@ -45,7 +45,10 @@ class JoinSchoolClassTest(TestCase):
def test_class_already_joined(self):
code = 'YYYY'
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)