From e6f4612fb381e8220a6755565a59ea17f9ff90c1 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 10 Feb 2017 11:12:15 +0100 Subject: [PATCH] unit tests for add subject form validation --- smash/web/forms.py | 1 + smash/web/models.py | 1 + smash/web/tests.py | 50 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/smash/web/forms.py b/smash/web/forms.py index 76ca94fe..98836512 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 53889559..40d7ed83 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 7ce503c2..6e8e8169 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) -- GitLab