def test_sets_message_to_enable_done_view(self): form = mommy.make(Form, project=self.project, slug='form-1', published=True) mommy.make(FormField, id=1, form=form, kind='multiple-choice', details={'choices': [{'label': 'A'}, {'label': 'B'}]}) fill_out_form(self.request, form.project, form.slug) self.assertEqual(len(self.request._messages._queued_messages), 1) msg = self.request._messages._queued_messages[0] self.assertEqual(msg.level, messages.SUCCESS) self.assertEqual(msg.message, 'DONE')
def test_rerenders_form_with_error_messages_if_response_invalid(self): form = mommy.make(Form, project=self.project, slug='form-1', published=True) mommy.make(FormField, id=1, form=form, kind='multiple-choice', details={'question': 'Pick your answers', 'choices': [{'label': 'A'}, {'label': 'B'}], 'required': True}) response = fill_out_form(self.request, form.project, form.slug) self.assertContains(response, 'Pick your answers') self.assertContains(response, 'class="error"')
def test_renders_the_form_template_and_handles_markdown(self): form = mommy.make(Form, project=self.project, slug='form-1', published=True) # mommy.make(FormField, form=form, kind='short-answer', # details={'question': '# Answer the question.'}) mommy.make(FormField, form=form, kind='multiple-choice', details={'question': '# Pick some answers.', 'choices': [{'label': 'A'}, {'label': 'B'}]}) response = fill_out_form(self.request, form.project, form.slug) self.assertContains(response, '<h1>Pick some answers.</h1>') self.assertContains(response, 'value="A"') self.assertContains(response, 'value="B"')
def test_creates_response_and_redirects_to_done_page(self): form = mommy.make(Form, project=self.project, slug='form-1', published=True) mommy.make(FormField, id=1, form=form, kind='multiple-choice', details={'choices': [{'label': 'A'}, {'label': 'B'}]}) response = fill_out_form(self.request, form.project, form.slug) self.assertEqual(response.status_code, 302) url = reverse('response_done', args=[form.project, 'form-1']) self.assertEqual(response.url, url) form_response = FormResponse.objects.last() field_response = form_response.formfieldresponse_set.first() self.assertEqual(form_response.form_id, form.id) self.assertEqual(field_response.details['answers'][0]['label'], 'A') self.assertFalse(field_response.details['answers'][0]['selected']) self.assertEqual(field_response.details['answers'][1]['label'], 'B') self.assertFalse(field_response.details['answers'][1]['selected'])