From 47572bb2125a9fc1837181a16dc856ade755c07a Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Fri, 29 Mar 2019 16:37:48 +0100 Subject: [PATCH] Add new tests for projects --- server/api/test_utils.py | 23 ++++++++++++++ .../tests/test_assignment_permissions.py | 28 ++++------------- server/portfolio/tests/__init__.py | 0 .../portfolio/tests/test_project_mutations.py | 30 +++++++++++++++++++ .../rooms/tests/test_room_entry_mutations.py | 2 -- 5 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 server/api/test_utils.py create mode 100644 server/portfolio/tests/__init__.py create mode 100644 server/portfolio/tests/test_project_mutations.py diff --git a/server/api/test_utils.py b/server/api/test_utils.py new file mode 100644 index 00000000..967eead4 --- /dev/null +++ b/server/api/test_utils.py @@ -0,0 +1,23 @@ +from django.test import RequestFactory, TestCase +from graphene.test import Client +from api.schema import schema +from users.models import User +from users.services import create_users + + +def create_client(user): + request = RequestFactory().get('/') + request.user = user + return Client(schema=schema, context_value=request) + + +class DefaultUserTestCase(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.student_second_class = User.objects.get(username='student_second_class') + diff --git a/server/assignments/tests/test_assignment_permissions.py b/server/assignments/tests/test_assignment_permissions.py index f45fff12..8b9235ce 100644 --- a/server/assignments/tests/test_assignment_permissions.py +++ b/server/assignments/tests/test_assignment_permissions.py @@ -1,25 +1,13 @@ -from django.test import RequestFactory, TestCase -from graphene.test import Client from graphql_relay import to_global_id -from api.utils import get_graphql_mutation +from api.test_utils import create_client, DefaultUserTestCase 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): +class AssignmentPermissionsTestCase(DefaultUserTestCase): 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.student_second_class = User.objects.get(username='student_second_class') + super(AssignmentPermissionsTestCase, self).setUp() self.assignment = AssignmentFactory( owner=self.teacher ) @@ -27,10 +15,6 @@ class AssignmentPermissionsTestCase(TestCase): self.assignment_id = to_global_id('AssignmentNode', self.assignment.pk) self.module_id = to_global_id('ModuleNode', self.assignment.module.pk) - def _create_client(self, user): - request = RequestFactory().get('/') - request.user = user - return Client(schema=schema, context_value=request) def _submit_submission(self, user=None): mutation = ''' @@ -53,9 +37,9 @@ class AssignmentPermissionsTestCase(TestCase): ''' if user is None: - client = self._create_client(self.student1) + client = create_client(self.student1) else: - client = self._create_client(user) + client = create_client(user) return client.execute(mutation, variables={ 'input': { @@ -82,7 +66,7 @@ class AssignmentPermissionsTestCase(TestCase): self.assertEqual(StudentSubmission.objects.count(), 1) def _test_visibility(self, user, count): - client = self._create_client(user) + client = create_client(user) query = ''' query AssignmentWithSubmissions($id: ID!) { assignment(id: $id) { diff --git a/server/portfolio/tests/__init__.py b/server/portfolio/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/portfolio/tests/test_project_mutations.py b/server/portfolio/tests/test_project_mutations.py new file mode 100644 index 00000000..30e9e215 --- /dev/null +++ b/server/portfolio/tests/test_project_mutations.py @@ -0,0 +1,30 @@ +from api.test_utils import create_client, DefaultUserTestCase +from portfolio.models import Project + + +class ProjectMutationsTestCase(DefaultUserTestCase): + def test_add_project(self): + client = create_client(self.student1) + mutation = """ + mutation AddProjectMutation($input: AddProjectInput!){ + addProject(input: $input){ + project { + id + } + errors + } + } + """ + + result = client.execute(mutation, variables={ + 'input': { + "project": { + "title": "Rick Astley", + "description": "She wants to dance with me", + "objectives": "Dance with me", + "appearance": "green" + } + } + }) + self.assertIsNone(result.get('errors')) + self.assertEqual(Project.objects.count(), 1) diff --git a/server/rooms/tests/test_room_entry_mutations.py b/server/rooms/tests/test_room_entry_mutations.py index 1a0fc724..043dd826 100644 --- a/server/rooms/tests/test_room_entry_mutations.py +++ b/server/rooms/tests/test_room_entry_mutations.py @@ -7,8 +7,6 @@ from core.factories import UserFactory from rooms.factories import RoomEntryFactory, RoomFactory from rooms.models import RoomEntry from users.factories import SchoolClassFactory -from users.services import create_users - class RoomEntryMutationsTestCase(TestCase): def setUp(self):