Skip to content
Snippets Groups Projects
tests.py 1.65 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=None, required=None):
            if fields is None:
                fields = []
            if required is None:
                required = []
    
    
            return {
                "COUNTRY": {
                    "fields": [
                        {field: {"label": field}} for field in set(fields + required)
                    ],
                    "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"})