From 4ac0768d63aa591526b9ce63ec696dc9eb494082 Mon Sep 17 00:00:00 2001
From: Carlos Vega <carlos.vega@uni.lu>
Date: Mon, 22 Oct 2018 12:46:06 +0200
Subject: [PATCH] added tests and added 400 response if invalid request

---
 smash/web/tests/view/test_appointments.py | 39 +++++++++++++++++++++--
 smash/web/views/appointment.py            |  3 ++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/smash/web/tests/view/test_appointments.py b/smash/web/tests/view/test_appointments.py
index a1544f21..e17bb743 100644
--- a/smash/web/tests/view/test_appointments.py
+++ b/smash/web/tests/view/test_appointments.py
@@ -4,11 +4,11 @@ import logging
 from django.core.files.uploadedfile import SimpleUploadedFile
 from django.urls import reverse
 
-from web.forms import SubjectEditForm, StudySubjectEditForm, AppointmentEditForm
+from web.forms import SubjectEditForm, StudySubjectEditForm, AppointmentEditForm, AppointmentAddForm
 from web.models import Appointment, StudySubject, Visit
 from web.tests import LoggedInTestCase
 from web.tests.functions import create_study_subject, create_visit, create_appointment, create_worker, \
-    create_flying_team, format_form_field
+    create_flying_team, format_form_field, get_test_location
 from web.views.notifications import get_today_midnight_date
 
 logger = logging.getLogger(__name__)
@@ -19,6 +19,41 @@ class AppointmentsViewTests(LoggedInTestCase):
         super(AppointmentsViewTests, self).setUp()
         create_worker(self.user, True)
 
+    def test_get_add_general_appointment(self):
+        #test get without visit_id
+        response = self.client.get(reverse('web.views.appointment_add_general'))
+        self.assertEqual(response.status_code, 200)
+    def test_get_add_appointment(self):
+        #test get with visit_id
+        subject = create_study_subject()
+        visit = create_visit(subject)
+        response = self.client.get(reverse('web.views.appointment_add', 
+            kwargs={'visit_id': visit.id}))
+        self.assertEqual(response.status_code, 200)
+
+    def test_post_add_general_appointment(self):
+        location = get_test_location()
+        form_appointment = AppointmentAddForm(user=self.user)
+        form_data = {}
+        form_data['datetime_when'] = datetime.datetime.today()
+        form_data['location'] = location.id
+        form_data['length'] = 10
+        response = self.client.post(reverse('web.views.appointment_add_general'), data=form_data)
+        self.assertEqual(response.status_code, 302)
+
+    def test_add_appointment(self):
+        subject = create_study_subject()
+        visit = create_visit(subject)
+        location = get_test_location()
+        form_data = {}
+        form_appointment = AppointmentAddForm(user=self.user)
+        form_data['datetime_when'] = datetime.datetime.today()
+        form_data['location'] = location.id
+        form_data['length'] = 10
+        response = self.client.post(reverse('web.views.appointment_add', 
+            kwargs={'visit_id': visit.id}), data=form_data)
+        self.assertEqual(response.status_code, 302)
+    
     def test_appointments_list_request(self):
         response = self.client.get(reverse('web.views.appointments'))
         self.assertEqual(response.status_code, 200)
diff --git a/smash/web/views/appointment.py b/smash/web/views/appointment.py
index 028c3b9f..bc782e45 100644
--- a/smash/web/views/appointment.py
+++ b/smash/web/views/appointment.py
@@ -56,6 +56,9 @@ def appointment_add(request, visit_id=None):
                 return redirect('web.views.appointments')
             else:
                 return redirect('web.views.visit_details', id=visit_id)
+        else:
+            raise ValidationError("Invalid request: Errors: {}. Non field errors: {}".format(form.errors, form.non_field_errors()))
+
     else:
         form = AppointmentAddForm(user=request.user)
 
-- 
GitLab