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

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.models import RoomEntry
from users.factories import SchoolClassFactory
from users.services import create_users
class RoomEntryMutationsTestCase(TestCase):
def setUp(self):