From 99487c9705bc2d4d2915e356a3909882ff1985d5 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 12 Feb 2020 20:29:22 +0100 Subject: [PATCH] Add unit tests --- server/users/tests/test_join_class.py | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 server/users/tests/test_join_class.py diff --git a/server/users/tests/test_join_class.py b/server/users/tests/test_join_class.py new file mode 100644 index 00000000..47962a4c --- /dev/null +++ b/server/users/tests/test_join_class.py @@ -0,0 +1,68 @@ +from django.test import TestCase +from graphene import Context +from graphene.test import Client + +from core.factories import UserFactory +from users.factories import SchoolClassFactory +from users.models import SchoolClass +from api.schema import schema + + +class JoinSchoolClassTest(TestCase): + def setUp(self): + self.client = Client(schema=schema) + self.user = UserFactory(username='ueli') + SchoolClassFactory(users=[self.user], name='Klasse 1A', code='XXXX') + SchoolClassFactory(name='Klasse 2B', code='YYYY') + self.mutation = """ + mutation JoinClass($input: JoinClassInput!) { + joinClass(input: $input) { + success + schoolClass { + id + name + } + } + } + """ + self.variables = { + 'input': { + 'code': 'YYYY' + } + } + self.context = Context(user=self.user) + + def test_join_class(self): + self.assertEqual(self.user.school_classes.count(), 1) + + executed = self.client.execute(self.mutation, variables=self.variables, context=self.context) + self.assertIsNone(executed.get('errors', None)) + result = executed['data']['joinClass'] + self.assertEqual(result['success'], True) + self.assertEqual(result['schoolClass']['name'], 'Klasse 2B') + self.assertEqual(self.user.school_classes.count(), 2) + + def test_class_already_joined(self): + code = 'YYYY' + school_class = SchoolClass.objects.get(code=code) + school_class.users.add(self.user) + + self.assertEqual(self.user.school_classes.count(), 2) + + executed = self.client.execute(self.mutation, variables=self.variables, context=self.context) + self.assertIsNotNone(executed['errors']) + self.assertEqual(executed['errors'][0]['message'], 'Code ist nicht gültig') + self.assertEqual(self.user.school_classes.count(), 2) + + def test_code_not_valid(self): + code = '1234' + self.assertEqual(self.user.school_classes.count(), 1) + + executed = self.client.execute(self.mutation, variables={ + 'input': { + 'code': code + } + }, context=self.context) + self.assertIsNotNone(executed['errors']) + self.assertEqual(executed['errors'][0]['message'], 'Code ist nicht gültig') + self.assertEqual(self.user.school_classes.count(), 1)