From aba42382bee8a3eaa70f11891eb3d03e6e3fd8bf Mon Sep 17 00:00:00 2001
From: janmax <mail-github@jmx.io>
Date: Thu, 23 Nov 2017 23:06:55 +0100
Subject: [PATCH] ExamListView implemented and tested

---
 backend/core/tests/test_examlist.py | 32 +++++++++++++++++++++++++++++
 backend/core/urls.py                |  2 ++
 backend/core/views.py               |  8 ++++++--
 3 files changed, 40 insertions(+), 2 deletions(-)
 create mode 100644 backend/core/tests/test_examlist.py

diff --git a/backend/core/tests/test_examlist.py b/backend/core/tests/test_examlist.py
new file mode 100644
index 00000000..51d55a8b
--- /dev/null
+++ b/backend/core/tests/test_examlist.py
@@ -0,0 +1,32 @@
+""" Tests that we can receive information about what exams where written """
+
+from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import (APIRequestFactory, APITestCase,
+                                 force_authenticate)
+
+from core.models import ExamType
+from core.views import ExamListView
+from util.factories import GradyUserFactory
+
+NUMBER_OF_TUTORS = 7
+
+
+class ExamListTest(APITestCase):
+
+    @classmethod
+    def setUpTestData(cls):
+        cls.factory = APIRequestFactory()
+        cls.user_factory = GradyUserFactory()
+
+    def setUp(self):
+        self.request = self.factory.get(reverse('exam-list'))
+        force_authenticate(self.request, self.user_factory.make_student().user)
+        self.view = ExamListView.as_view()
+        self.response = self.view(self.request)
+
+    def test_can_access_when_authenticated(self):
+        self.assertEqual(self.response.status_code, status.HTTP_200_OK)
+
+    def test_getting_all_available_exams(self):
+        self.assertEqual(ExamType.objects.count(), len(self.response.data))
diff --git a/backend/core/urls.py b/backend/core/urls.py
index d7eb60ec..c0249223 100644
--- a/backend/core/urls.py
+++ b/backend/core/urls.py
@@ -7,6 +7,8 @@ from core import views
 urlpatterns = [
     url(r'^api/student/$', views.StudentApiView.as_view(), name='student-page'),
 
+    url(r'^api/examlist/$', views.ExamListView.as_view(), name='exam-list'),
+
     url(r'^api/tutor/$', views.TutorCreateView.as_view(), name='tutor-create'),
     url(r'^api/tutorlist/$', views.TutorListApiView.as_view(), name='tutor-list'),
 
diff --git a/backend/core/views.py b/backend/core/views.py
index f47ac250..3bce5564 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -3,8 +3,8 @@ import logging
 from rest_framework import generics
 
 from core.permissions import IsStudent, IsReviewer
-from core.serializers import StudentSerializer, TutorSerializer
-from core.models import Tutor
+from core.serializers import StudentSerializer, TutorSerializer, ExamSerializer
+from core.models import Tutor, ExamType
 
 log = logging.getLogger(__name__)
 
@@ -30,3 +30,7 @@ class TutorCreateView(generics.CreateAPIView):
     permission_classes = (IsReviewer,)
     serializer_class = TutorSerializer
 
+
+class ExamListView(generics.ListAPIView):
+    queryset = ExamType.objects.all()
+    serializer_class = ExamSerializer
-- 
GitLab