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