diff --git a/core/tests/test_functional_views.py b/core/tests/test_functional_views.py new file mode 100644 index 0000000000000000000000000000000000000000..f5107bf5766ea2f57ff1b6510f6dd114845791d6 --- /dev/null +++ b/core/tests/test_functional_views.py @@ -0,0 +1,50 @@ +from django.urls import reverse +from rest_framework.test import (APIRequestFactory, APITestCase, + force_authenticate) +from core.models import ExamType +from core.views import get_exam_module, get_user_role +from util.factories import GradyUserFactory + + +class GetUserRoleTest(APITestCase): + @classmethod + def setUpTestData(cls): + cls.factory = APIRequestFactory() + cls.user_factory = GradyUserFactory() + cls.student = cls.user_factory.make_student() + cls.tutor = cls.user_factory.make_tutor() + cls.reviewer = cls.user_factory.make_reviewer() + + def setUp(self): + self.request = self.factory.get(reverse('user-role')) + + def test_get_user_model_returns_student(self): + force_authenticate(self.request, user=self.student.user) + response = get_user_role(self.request) + self.assertEqual(response.data['role'], 'Student') + + def test_get_user_model_returns_tutor(self): + force_authenticate(self.request, user=self.tutor.user) + response = get_user_role(self.request) + self.assertEqual(response.data['role'], 'Tutor') + + def test_get_user_model_returns_reviewer(self): + force_authenticate(self.request, user=self.reviewer.user) + response = get_user_role(self.request) + self.assertEqual(response.data['role'], 'Reviewer') + + +class GetExamModuleTest(APITestCase): + def test_get_exam_module(self): + self.factory = APIRequestFactory() + self.user = GradyUserFactory().make_student().user + self.request = self.factory.get(reverse('exam-module')) + force_authenticate(self.request, user=self.user) + self.expected = ExamType.objects.get_or_create( + pk=1, defaults={ + 'module_reference': 'Test Exam', + 'total_score': 100, + 'pass_score': 50, + })[0].module_reference + self.response = get_exam_module(self.request) + self.assertEqual(self.response.data['exam'], self.expected)