diff --git a/smash/web/forms.py b/smash/web/forms.py index 76ca94fe0bb0aafad3dc26da80ffd6325bbed753..9883651293dc811f1b30b71eb32c2c99f5fa7fa5 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -20,6 +20,7 @@ def validate_subject_nd_number(self): class SubjectAddForm(ModelForm): date_born = forms.DateField(label='Date of birth', + required = False, widget=forms.SelectDateWidget(years=YEAR_CHOICES) ) diff --git a/smash/web/models.py b/smash/web/models.py index 5388955992da548b95eb02e9787fd7621cebd2e1..40d7ed83c29c0bb6721e7852ef71e16829485f1f 100644 --- a/smash/web/models.py +++ b/smash/web/models.py @@ -151,6 +151,7 @@ class Subject(models.Model): year_of_diagnosis = models.IntegerField( default=0, null=True, + blank=True, verbose_name='Year of diagnosis (YYYY)' ) diff --git a/smash/web/tests.py b/smash/web/tests.py index 7ce503c2dd97ba78597f6ff6e4393132753573f6..6e8e81692ce8214511157bb50cc39f9623580990 100644 --- a/smash/web/tests.py +++ b/smash/web/tests.py @@ -1,3 +1,51 @@ from django.test import TestCase +from web.forms import SubjectAddForm +from web.models import Subject -# Create your tests here. +class SubjectAddFormTests(TestCase): + def test_validation(self): + form_data = {'first_name': 'name', + 'last_name': 'name', + 'status' : Subject.STATUS_CHOICES_NOT_CONTACTED, + 'sex' : Subject.SEX_CHOICES_MALE, + 'country' : 'Luxembourg' + } + form = SubjectAddForm(data=form_data) + form.is_valid() + self.assertTrue(form.is_valid()) + + def test_invalid(self): + form_data = {'first_name': 'name', + 'last_name': 'name', + 'status' : Subject.STATUS_CHOICES_NOT_CONTACTED, + 'sex' : Subject.SEX_CHOICES_MALE, + 'country' : 'Luxembourg', + 'screening_number' : '123' + } + form = SubjectAddForm(data=form_data) + form.is_valid() + self.assertTrue(form.is_valid()) + form.save() + + form2 = SubjectAddForm(data=form_data) + validation_status = form2.is_valid() + self.assertFalse(validation_status) + self.assertTrue("screening_number" in form2.errors) + + def test_invalid_2(self): + form_data = {'first_name': 'name', + 'last_name': 'name', + 'status' : Subject.STATUS_CHOICES_NOT_CONTACTED, + 'sex' : Subject.SEX_CHOICES_MALE, + 'country' : 'Luxembourg', + 'nd_number' : '123' + } + form = SubjectAddForm(data=form_data) + form.is_valid() + self.assertTrue(form.is_valid()) + form.save() + + form2 = SubjectAddForm(data=form_data) + validation_status = form2.is_valid() + self.assertFalse(validation_status) + self.assertTrue("nd_number" in form2.errors)