| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from django.contrib.contenttypes.models import ContentType
- from django.test import TestCase
- from dcim.forms import SiteForm
- from dcim.models import Site
- from extras.choices import CustomFieldTypeChoices
- from extras.models import CustomField
- class CustomFieldModelFormTest(TestCase):
- @classmethod
- def setUpTestData(cls):
- obj_type = ContentType.objects.get_for_model(Site)
- CHOICES = ('A', 'B', 'C')
- cf_text = CustomField.objects.create(name='text', type=CustomFieldTypeChoices.TYPE_TEXT)
- cf_text.content_types.set([obj_type])
- cf_integer = CustomField.objects.create(name='integer', type=CustomFieldTypeChoices.TYPE_INTEGER)
- cf_integer.content_types.set([obj_type])
- cf_boolean = CustomField.objects.create(name='boolean', type=CustomFieldTypeChoices.TYPE_BOOLEAN)
- cf_boolean.content_types.set([obj_type])
- cf_date = CustomField.objects.create(name='date', type=CustomFieldTypeChoices.TYPE_DATE)
- cf_date.content_types.set([obj_type])
- cf_url = CustomField.objects.create(name='url', type=CustomFieldTypeChoices.TYPE_URL)
- cf_url.content_types.set([obj_type])
- cf_select = CustomField.objects.create(name='select', type=CustomFieldTypeChoices.TYPE_SELECT, choices=CHOICES)
- cf_select.content_types.set([obj_type])
- cf_multiselect = CustomField.objects.create(name='multiselect', type=CustomFieldTypeChoices.TYPE_MULTISELECT,
- choices=CHOICES)
- cf_multiselect.content_types.set([obj_type])
- def test_empty_values(self):
- """
- Test that empty custom field values are stored as null
- """
- form = SiteForm({
- 'name': 'Site 1',
- 'slug': 'site-1',
- 'status': 'active',
- })
- self.assertTrue(form.is_valid())
- instance = form.save()
- for field_type, _ in CustomFieldTypeChoices.CHOICES:
- self.assertIn(field_type, instance.custom_field_data)
- self.assertIsNone(instance.custom_field_data[field_type])
|