Skip to content
Snippets Groups Projects
test_functional_views.py 1.47 KiB
from django.urls import reverse
from rest_framework.test import (APIRequestFactory, APITestCase,
                                 force_authenticate)

from core.views import get_user_role
from util.factories import GradyUserFactory, make_exams


class GetUserRoleTest(APITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.factory = APIRequestFactory()
        cls.user_factory = GradyUserFactory()
        cls.exam = make_exams(exams=[{
                'module_reference': 'Test Exam 01',
                'total_score': 100,
                'pass_score': 60,
            }])[0]
        cls.student = cls.user_factory.make_student(exam=cls.exam)
        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)
        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)
        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)
        response = get_user_role(self.request)
        self.assertEqual(response.data['role'], 'Reviewer')