|
| 1 | +from django import forms |
1 | 2 | from django.test import TestCase |
2 | 3 |
|
3 | | -from djangocms_frontend.fields import AttributesField, TagTypeField, TagTypeFormField |
| 4 | +from djangocms_frontend.settings import DEVICE_CHOICES |
| 5 | +from djangocms_frontend.fields import ( |
| 6 | + AttributesField, TagTypeField, |
| 7 | + TagTypeFormField, DeviceChoiceField, OptionalDeviceChoiceField) |
4 | 8 |
|
5 | 9 |
|
6 | 10 | class FieldsTestCase(TestCase): |
@@ -31,3 +35,32 @@ def test_tag_type_field(self): |
31 | 35 | ("aside", "aside"), |
32 | 36 | ], |
33 | 37 | ) |
| 38 | + |
| 39 | + def test_optional_device_choice_field(self): |
| 40 | + class Form(forms.Form): |
| 41 | + odc = OptionalDeviceChoiceField() |
| 42 | + odc_not_required = OptionalDeviceChoiceField(required=False) |
| 43 | + |
| 44 | + form = Form(data={"odc": [size for size, _ in DEVICE_CHOICES]}) |
| 45 | + self.assertTrue(form.is_valid(), form.errors) |
| 46 | + self.assertEqual(form.cleaned_data["odc"], None) |
| 47 | + |
| 48 | + form_1 = Form(data={"odc": ['xs', 'sm']}) |
| 49 | + self.assertTrue(form_1.is_valid(), form_1.errors) |
| 50 | + self.assertEqual(form_1.cleaned_data["odc"], ['xs', 'sm']) |
| 51 | + |
| 52 | + def test_device_choice_field(self): |
| 53 | + class Form(forms.Form): |
| 54 | + dc = DeviceChoiceField() |
| 55 | + |
| 56 | + class Form2(forms.Form): |
| 57 | + dc_not_required = DeviceChoiceField(required=False) |
| 58 | + |
| 59 | + form = Form(data={"dc": ["xs"]}) |
| 60 | + self.assertTrue(form.is_valid(), form.errors) |
| 61 | + self.assertEqual(form.cleaned_data["dc"], ["xs"]) |
| 62 | + |
| 63 | + form_1 = Form2(data={}) |
| 64 | + self.assertFalse(form_1.is_valid()) |
| 65 | + self.assertFormError(form_1, "dc_not_required", |
| 66 | + ["Please select at least one device size"]) |
0 commit comments