|
4 | 4 | from django.contrib.auth.models import User, AnonymousUser
|
5 | 5 | from django.contrib.sites.models import Site
|
6 | 6 | from django.db import IntegrityError
|
7 |
| -from django.http import HttpResponseRedirect |
| 7 | +from django.http import HttpResponse, HttpResponseRedirect |
8 | 8 | from django.template import Context, RequestContext, Template
|
9 | 9 | from django.test import TestCase
|
10 | 10 |
|
11 |
| -from forms_builder.forms.fields import NAMES, FILE |
| 11 | +from forms_builder.forms.fields import NAMES, FILE, SELECT |
12 | 12 | from forms_builder.forms.forms import FormForForm
|
13 | 13 | from forms_builder.forms.models import (Form, Field,
|
14 | 14 | STATUS_DRAFT, STATUS_PUBLISHED)
|
@@ -158,3 +158,76 @@ def test_form_redirect(self):
|
158 | 158 | self.assertEqual(response["location"], redirect_url)
|
159 | 159 | response = self.client.post(form_absolute_url, {'field': 'bar'})
|
160 | 160 | self.assertFalse(isinstance(response, HttpResponseRedirect))
|
| 161 | + |
| 162 | + def test_input_dropdown_not_required(self): |
| 163 | + form = Form.objects.create(title="Test") |
| 164 | + form.fields.create(label="Foo", field_type=SELECT, required=False, choices="one, two, three") |
| 165 | + form_for_form = FormForForm(form, Context()) |
| 166 | + self.assertContains(HttpResponse(form_for_form), """ |
| 167 | + <select name="foo" class="choicefield" id="id_foo"> |
| 168 | + <option value="" selected></option> |
| 169 | + <option value="one">one</option> |
| 170 | + <option value="two">two</option> |
| 171 | + <option value="three">three</option> |
| 172 | + </select>""", html=True) |
| 173 | + |
| 174 | + def test_input_dropdown_not_required_with_placeholder(self): |
| 175 | + form = Form.objects.create(title="Test") |
| 176 | + form.fields.create(label="Foo", placeholder_text="choose item", field_type=SELECT, |
| 177 | + required=False, choices="one, two, three") |
| 178 | + form_for_form = FormForForm(form, Context()) |
| 179 | + self.assertContains(HttpResponse(form_for_form), """ |
| 180 | + <select name="foo" class="choicefield" id="id_foo"> |
| 181 | + <option value="" selected>choose item</option> |
| 182 | + <option value="one">one</option> |
| 183 | + <option value="two">two</option> |
| 184 | + <option value="three">three</option> |
| 185 | + </select>""", html=True) |
| 186 | + |
| 187 | + def test_input_dropdown_required(self): |
| 188 | + form = Form.objects.create(title="Test") |
| 189 | + form.fields.create(label="Foo", field_type=SELECT, choices="one, two, three") |
| 190 | + form_for_form = FormForForm(form, Context()) |
| 191 | + self.assertContains(HttpResponse(form_for_form), """ |
| 192 | + <select name="foo" required class="choicefield required" id="id_foo"> |
| 193 | + <option value="" selected></option> |
| 194 | + <option value="one">one</option> |
| 195 | + <option value="two">two</option> |
| 196 | + <option value="three">three</option> |
| 197 | + </select>""", html=True) |
| 198 | + |
| 199 | + def test_input_dropdown_required_with_placeholder(self): |
| 200 | + form = Form.objects.create(title="Test") |
| 201 | + form.fields.create(label="Foo", placeholder_text="choose item", field_type=SELECT, |
| 202 | + choices="one, two, three") |
| 203 | + form_for_form = FormForForm(form, Context()) |
| 204 | + self.assertContains(HttpResponse(form_for_form), """ |
| 205 | + <select name="foo" required class="choicefield required" id="id_foo"> |
| 206 | + <option value="" selected>choose item</option> |
| 207 | + <option value="one">one</option> |
| 208 | + <option value="two">two</option> |
| 209 | + <option value="three">three</option> |
| 210 | + </select>""", html=True) |
| 211 | + |
| 212 | + def test_input_dropdown_required_with_placeholder_and_default(self): |
| 213 | + form = Form.objects.create(title="Test") |
| 214 | + form.fields.create(label="Foo", placeholder_text="choose item", field_type=SELECT, |
| 215 | + choices="one, two, three", default="two") |
| 216 | + form_for_form = FormForForm(form, Context()) |
| 217 | + self.assertContains(HttpResponse(form_for_form), """ |
| 218 | + <select name="foo" required class="choicefield required" id="id_foo"> |
| 219 | + <option value="one">one</option> |
| 220 | + <option value="two" selected>two</option> |
| 221 | + <option value="three">three</option> |
| 222 | + </select>""", html=True) |
| 223 | + |
| 224 | + def test_input_dropdown_required_with_default(self): |
| 225 | + form = Form.objects.create(title="Test") |
| 226 | + form.fields.create(label="Foo", field_type=SELECT, choices="one, two, three", default="two") |
| 227 | + form_for_form = FormForForm(form, Context()) |
| 228 | + self.assertContains(HttpResponse(form_for_form), """ |
| 229 | + <select name="foo" required class="choicefield required" id="id_foo"> |
| 230 | + <option value="one">one</option> |
| 231 | + <option value="two" selected>two</option> |
| 232 | + <option value="three">three</option> |
| 233 | + </select>""", html=True) |
0 commit comments