From 4d308029630848aad748e73a0085358f911e5764 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 10 Feb 2017 16:13:57 +0100
Subject: [PATCH] validation to visit dates added

---
 smash/web/forms.py                   |  5 ++++
 smash/web/tests/test_VisitAddForm.py | 34 ++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)
 create mode 100644 smash/web/tests/test_VisitAddForm.py

diff --git a/smash/web/forms.py b/smash/web/forms.py
index 020e4c47..4519a0ad 100644
--- a/smash/web/forms.py
+++ b/smash/web/forms.py
@@ -151,3 +151,8 @@ class VisitAddForm(ModelForm):
     class Meta:
         model = Visit
         exclude = ['is_finished']
+
+    def clean(self):
+        if (self.cleaned_data['datetime_begin']>=self.cleaned_data['datetime_end']):
+            self.add_error('datetime_begin', "Start date must be before end date")
+            self.add_error('datetime_end', "Start date must be before end date")
diff --git a/smash/web/tests/test_VisitAddForm.py b/smash/web/tests/test_VisitAddForm.py
new file mode 100644
index 00000000..9a35892b
--- /dev/null
+++ b/smash/web/tests/test_VisitAddForm.py
@@ -0,0 +1,34 @@
+from django.test import TestCase
+from web.forms import SubjectAddForm
+from web.forms import VisitAddForm
+from web.models import Subject
+from web.models import Visit
+
+class SubjectAddFormTests(TestCase):
+    def setUp(self):
+        subject_data = {'first_name': 'name',
+            'last_name': 'name',
+            'status' : Subject.STATUS_CHOICES_NOT_CONTACTED,
+            'sex' : Subject.SEX_CHOICES_MALE,
+            'country' : 'Luxembourg',
+        }
+        self.subject = SubjectAddForm(data=subject_data).save()
+
+        self.sample_data = {'datetime_begin': "2017-01-01",
+            'datetime_end': "2017-02-02",
+            'visit_type': Visit.TYPE_CHOICES_OTHER,
+            'subject' : self.subject.id
+        }
+
+    def test_validation(self):
+        form = VisitAddForm(data=self.sample_data)
+        self.assertTrue(form.is_valid())
+
+    def test_invalid_validation(self):
+        self.sample_data['datetime_begin'] = "2017-02-02"
+        self.sample_data['datetime_end'] = "2017-01-01"
+        form = VisitAddForm(data=self.sample_data)
+        validation_status = form.is_valid()
+        self.assertFalse(validation_status)
+        self.assertTrue("datetime_begin" in form.errors)
+        self.assertTrue("datetime_end" in form.errors)
-- 
GitLab