Newer
Older
import logging
from web.forms import StudySubjectAddForm, get_new_screening_number
Piotr Gawron
committed
from web.models.constants import SUBJECT_TYPE_CHOICES_CONTROL
from web.tests import LoggedInWithWorkerTestCase
Piotr Gawron
committed
from web.tests.functions import create_study_subject, create_subject, get_test_study
class StudySubjectAddFormTests(LoggedInWithWorkerTestCase):
location = self.worker.locations.all()[0]
Piotr Gawron
committed
self.study = get_test_study()
Piotr Gawron
committed
self.sample_data = {
'type': SUBJECT_TYPE_CHOICES_CONTROL,
'default_location': location.id,
'screening_number': "123",
'subject': self.subject.id
}
form = StudySubjectAddForm(data=self.sample_data, user=self.user)
form.is_valid()
self.assertTrue(form.is_valid())
def test_invalid(self):
form_data = self.sample_data
form_data['screening_number'] = "123"
form = StudySubjectAddForm(data=form_data, user=self.user)
Piotr Gawron
committed
form.instance.subject_id = self.subject.id
Piotr Gawron
committed
form.instance.study_id = self.study.id
self.assertTrue(form.is_valid())
self.assertIsNone(form.fields['year_of_diagnosis'].initial)
form2 = StudySubjectAddForm(data=form_data, user=self.user)
validation_status = form2.is_valid()
self.assertFalse(validation_status)
self.assertTrue("screening_number" in form2.errors)
def test_invalid_2(self):
form = StudySubjectAddForm(data=form_data, user=self.user)
form.is_valid()
self.assertTrue(form.is_valid())
Piotr Gawron
committed
form.instance.subject_id = self.subject.id
Piotr Gawron
committed
form.instance.study_id = self.study.id
form_data['screening_number'] = "2"
form2 = StudySubjectAddForm(data=form_data, user=self.user)
validation_status = form2.is_valid()
self.assertFalse(validation_status)
self.assertTrue("nd_number" in form2.errors)
def test_invalid_mpower_id(self):
form_data = self.sample_data
form_data['mpower_id'] = "123"
form = StudySubjectAddForm(data=form_data, user=self.user)
form.is_valid()
self.assertTrue(form.is_valid())
Piotr Gawron
committed
form.instance.subject_id = self.subject.id
Piotr Gawron
committed
form.instance.study_id = self.study.id
form.save()
form_data['screening_number'] = "2"
form2 = StudySubjectAddForm(data=form_data, user=self.user)
validation_status = form2.is_valid()
self.assertFalse(validation_status)
self.assertTrue("mpower_id" in form2.errors)
def test_get_new_screening_number(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = prefix + "300"
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "301", new_screening_number)
def test_get_new_screening_number_2(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = "L-1111; " + prefix + "300"
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "301", new_screening_number)
def test_get_new_screening_number_3(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = "P-1112; " + prefix + "300" + "; L-1111"
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "301", new_screening_number)
def test_get_new_screening_number_4(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = "P-1112; "
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "001", new_screening_number)
def test_get_new_screening_number_5(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = prefix + "100"
subject.save()
subject = create_study_subject()
subject.screening_number = prefix + "200"
subject.save()
subject = create_study_subject()
subject.screening_number = "Y-300"
subject.save()
subject = create_study_subject()
subject.screening_number = prefix + "20"
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "201", new_screening_number)
def test_get_new_screening_number_6(self):
prefix = "X-"
subject = create_study_subject()
subject.screening_number = "X-"
subject.save()
new_screening_number = get_new_screening_number(prefix)
self.assertEqual(prefix + "001", new_screening_number)