diff --git a/smash/web/forms.py b/smash/web/forms.py index 020e4c4722ab8f9a83e4e49e9ebea8a57634a008..4519a0ada352f7164f48a990ca1bee17be66cbab 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 0000000000000000000000000000000000000000..9a35892b17104ab8d46beaaffbc004890821386e --- /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)