Skip to content
Snippets Groups Projects
tests.py 1.5 KiB
Newer Older
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'})