def test_clean_export_label(self): data = self.form_data.copy() data['export_label'] = '' question_form = QuestionForm(data=data) self.assertFalse(question_form.is_valid()) self.assertIn("All questions must have export label.", question_form.errors['export_label'])
def test_clean_answer_type(self): data = self.form_data.copy() data['answer_type'] = '' question_form = QuestionForm(data=data) self.assertFalse(question_form.is_valid()) self.assertIn("This field is required.", question_form.errors['answer_type'])
def test_increments_uid_of_existing_question_by_one_upon_save_given_instance( self): Question.objects.create(text='B. Number of cases tested', instructions="Enter the total number of cases", UID='00001', answer_type='Number') question_form = QuestionForm(data=self.form_data) question = question_form.save(commit=True) self.assertEqual('00002', question.UID)
def test_form_invalid_if_multichoice_question_and_no_options_in_data_options( self): form = { 'text': 'How many kids were immunised this year?', 'instructions': 'Some instructions', 'short_instruction': 'short version', 'export_label': 'blah', 'answer_type': 'MultiChoice', 'options': ['', ''] } question_form = QuestionForm(data=form) self.assertFalse(question_form.is_valid()) message = "MultiChoice questions must have at least one option" self.assertIn(message, question_form.errors['answer_type'][0])
def test_save_multichoice_question_saves_options(self): options = ['Yes', 'No', 'Maybe'] form = { 'text': 'How many kids were immunised this year?', 'instructions': 'Some instructions', 'short_instruction': 'short version', 'export_label': 'blah', 'answer_type': 'MultiChoice', 'options': options } question_form = QuestionForm(data=form) question = question_form.save(commit=True) question_options = QuestionOption.objects.filter(question=question) self.assertEqual(3, question_options.count()) [ self.assertIn(question_option.text, options) for question_option in question_options ]
def post(self, request, *args, **kwargs): self.form = QuestionForm(data=request.POST) if self.form.is_valid(): return self._form_valid() return self._form_invalid()
def test_answer_type_choices_has_empty_label(self): question_form = QuestionForm() self.assertIn(('', 'Response type'), question_form.fields['answer_type'].choices)
def test_invalid_if_question_text_is_blank(self): data = self.form_data.copy() data['text'] = '' question_form = QuestionForm(data=data) self.assertFalse(question_form.is_valid()) self.assertIn("This field is required.", question_form.errors['text'])
def test_valid(self): section_form = QuestionForm(data=self.form_data) self.assertTrue(section_form.is_valid())