From de62252824fac8e597b68208b87b52ec14329abd Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Thu, 5 Mar 2020 16:54:56 +0100 Subject: [PATCH] Fix unit tests --- server/assignments/tests/test_feedback.py | 26 +++++++++---------- .../core/management/commands/import_users.py | 7 +++-- server/registration/mutations_public.py | 7 +++-- server/users/mutations.py | 5 +++- server/users/tests/test_join_class.py | 7 +++-- 5 files changed, 32 insertions(+), 20 deletions(-) diff --git a/server/assignments/tests/test_feedback.py b/server/assignments/tests/test_feedback.py index 54f34347..ff5fd3ac 100644 --- a/server/assignments/tests/test_feedback.py +++ b/server/assignments/tests/test_feedback.py @@ -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() diff --git a/server/core/management/commands/import_users.py b/server/core/management/commands/import_users.py index db1b674f..3b2bd74a 100644 --- a/server/core/management/commands/import_users.py +++ b/server/core/management/commands/import_users.py @@ -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("") diff --git a/server/registration/mutations_public.py b/server/registration/mutations_public.py index 181fdec5..5b53c652 100644 --- a/server/registration/mutations_public.py +++ b/server/registration/mutations_public.py @@ -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) diff --git a/server/users/mutations.py b/server/users/mutations.py index 694a78b8..4a5f6c7d 100644 --- a/server/users/mutations.py +++ b/server/users/mutations.py @@ -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 diff --git a/server/users/tests/test_join_class.py b/server/users/tests/test_join_class.py index 7ad9e627..a1409ee8 100644 --- a/server/users/tests/test_join_class.py +++ b/server/users/tests/test_join_class.py @@ -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)