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