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