Add new tests for projects

This commit is contained in:
Ramon Wenger 2019-03-29 16:37:48 +01:00
parent 5b83b04a0a
commit 47572bb212
5 changed files with 59 additions and 24 deletions

23
server/api/test_utils.py Normal file
View File

@ -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')

View File

@ -1,25 +1,13 @@
from django.test import RequestFactory, TestCase
from graphene.test import Client
from graphql_relay import to_global_id 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 assignments.models import Assignment, StudentSubmission
from books.factories import ModuleFactory
from ..factories import AssignmentFactory 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): def setUp(self):
create_users() super(AssignmentPermissionsTestCase, self).setUp()
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')
self.assignment = AssignmentFactory( self.assignment = AssignmentFactory(
owner=self.teacher owner=self.teacher
) )
@ -27,10 +15,6 @@ class AssignmentPermissionsTestCase(TestCase):
self.assignment_id = to_global_id('AssignmentNode', self.assignment.pk) self.assignment_id = to_global_id('AssignmentNode', self.assignment.pk)
self.module_id = to_global_id('ModuleNode', self.assignment.module.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): def _submit_submission(self, user=None):
mutation = ''' mutation = '''
@ -53,9 +37,9 @@ class AssignmentPermissionsTestCase(TestCase):
''' '''
if user is None: if user is None:
client = self._create_client(self.student1) client = create_client(self.student1)
else: else:
client = self._create_client(user) client = create_client(user)
return client.execute(mutation, variables={ return client.execute(mutation, variables={
'input': { 'input': {
@ -82,7 +66,7 @@ class AssignmentPermissionsTestCase(TestCase):
self.assertEqual(StudentSubmission.objects.count(), 1) self.assertEqual(StudentSubmission.objects.count(), 1)
def _test_visibility(self, user, count): def _test_visibility(self, user, count):
client = self._create_client(user) client = create_client(user)
query = ''' query = '''
query AssignmentWithSubmissions($id: ID!) { query AssignmentWithSubmissions($id: ID!) {
assignment(id: $id) { assignment(id: $id) {

View File

View File

@ -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)

View File

@ -7,8 +7,6 @@ from core.factories import UserFactory
from rooms.factories import RoomEntryFactory, RoomFactory from rooms.factories import RoomEntryFactory, RoomFactory
from rooms.models import RoomEntry from rooms.models import RoomEntry
from users.factories import SchoolClassFactory from users.factories import SchoolClassFactory
from users.services import create_users
class RoomEntryMutationsTestCase(TestCase): class RoomEntryMutationsTestCase(TestCase):
def setUp(self): def setUp(self):