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"})