Skip to content
Snippets Groups Projects
tests.py 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.core.exceptions import ValidationError
    from django.test import TestCase
    
    from .fields import AddressField
    
    
    class TestRequiredFields(TestCase):
        def build_validation_data(self, fields=list(), required=list()):
            fields = set(fields + required)
            return {'COUNTRY': {
                'fields': [{field: {'label': field}} for field in fields],
                'required': required,
            }}
    
        def test_non_required(self):
            field = AddressField()
            field.data = self.build_validation_data(fields=['postalcode'])
            field.clean({'country': 'COUNTRY'})
    
        def test_non_required_blank_data(self):
            field = AddressField()
            field.data = self.build_validation_data(fields=['postalcode'])
            field.clean({'country': 'COUNTRY', 'postalcode': ''})
    
        def test_one_field_required(self):
            field = AddressField()
            field.data = self.build_validation_data(required=['postalcode'])
            with self.assertRaises(ValidationError):
                field.clean({'country': 'COUNTRY'})
    
        def test_one_field_required_blank_data(self):
            field = AddressField()
            field.data = self.build_validation_data(required=['postalcode'])
            with self.assertRaises(ValidationError):
                field.clean({'country': 'COUNTRY', 'postalcode': ''})
    
        def test_one_field_required_supplied_data(self):
            field = AddressField()
            field.data = self.build_validation_data(required=['postalcode'])
            field.clean({'country': 'COUNTRY', 'postalcode': 'BS1 2AB'})