def test_address_form_for_country(country): data = { 'first_name': 'John', 'last_name': 'Doe', 'country': country} form = forms.AddressForm(data) errors = form.errors required = i18naddress.validate_areas(country)[0] if 'street_address' in required: assert 'street_address_1' in errors else: assert 'street_address_1' not in errors if 'city' in required: assert 'city' in errors else: assert 'city' not in errors if 'city_area' in required: assert 'city_area' in errors else: assert 'city_area' not in errors if 'country_area' in required: assert 'country_area' in errors else: assert 'country_area' not in errors if 'postal_code' in required: assert 'postal_code' in errors else: assert 'postal_code' not in errors
def test_address_form_for_country(country): data = {'first_name': 'John', 'last_name': 'Doe', 'country': country} form = forms.AddressForm(data) errors = form.errors required = i18naddress.validate_areas(country)[0] if 'street_address' in required: assert 'street_address_1' in errors else: assert 'street_address_1' not in errors if 'city' in required: assert 'city' in errors else: assert 'city' not in errors if 'city_area' in required: assert 'city_area' in errors else: assert 'city_area' not in errors if 'country_area' in required: assert 'country_area' in errors else: assert 'country_area' not in errors if 'postal_code' in required: assert 'postal_code' in errors else: assert 'postal_code' not in errors
def test_validation_data(): validation_data = validate_areas( country_code='PL', country_area='D', city='WRO', city_area='AS')[1] assert validation_data == ValidationData( require=[], postal_code_regexp=re.compile('53-\\d{3}'), postal_code_example=None, country_area_keys=['D'], country_area_choices=[('D', 'Lower Silesian')], city_keys=['WRO'], city_choices=[('WRO', 'Wroclaw')], city_area_keys=['AS', 'OS'], city_area_choices=[ ('AS', 'Altstadt'), ('OS', 'Oder Stadtteil')])
def test_validation_data(): validation_data = validate_areas(country_code='PL', country_area='D', city='WRO', city_area='AS')[1] assert validation_data == ValidationData( require=[], postal_code_regexp=re.compile('53-\\d{3}', re.IGNORECASE), postal_code_example=None, country_area_keys=['D'], country_area_choices=[('D', 'Lower Silesian')], city_keys=['WRO'], city_choices=[('WRO', 'Wroclaw')], city_area_keys=['AS', 'OS'], city_area_choices=[('AS', 'Altstadt'), ('OS', 'Oder Stadtteil')])
def validate_areas(self, country_code, country_area, city, city_area, postal_code, street_address): error_messages = defaultdict(lambda: _('Invalid value'), self.fields['country'].error_messages) errors, validation_data = validate_areas(country_code, country_area, city, city_area, postal_code, street_address) if 'country' in errors: self.add_error( 'country', _('%s is not supported country code.') % country_code) if 'street_address' in errors: error = error_messages[errors['street_address']] % { 'value': street_address } self.add_error('street_address_1', error) if 'city' in errors: error = error_messages[errors['city']] % {'value': city} self.add_error('city', error) if 'city_area' in errors: error = error_messages[errors['city_area']] % {'value': city_area} self.add_error('city_area', error) if 'country_area' in errors: error = error_messages[errors['country_area']] % { 'value': country_area } self.add_error('country_area', error) if 'postal_code' in errors: if errors['postal_code'] == 'invalid': postal_code_example = validation_data.postal_code_example if postal_code_example: error = _('Invalid postal code. Ex. %(example)s') % { 'example': postal_code_example } else: error = _('Invalid postal code.') else: error = error_messages[errors['postal_code']] % { 'value': postal_code } self.add_error('postal_code', error)
def validate_areas(self, city, city_area, postal_code, street_address, office, to_office): error_messages = defaultdict( lambda: _('Invalid value'), self.fields['city'].error_messages) errors, validation_data = validate_areas( str(self.instance.country), None, city.name, city_area, postal_code, street_address) # if 'country' in errors: # self.add_error('country', _( # '%s is not supported country code.') % self.instance.country) if 'street_address' in errors: error = error_messages[errors['street_address']] % { 'value': street_address} self.add_error('street_address_1', error) if 'city' in errors and errors['city'] == 'required': error = error_messages[errors['city']] % { 'value': city} self.add_error('city', error) if 'city_area' in errors and errors['city_area'] == 'required': error = error_messages[errors['city_area']] % { 'value': city_area} self.add_error('city_area', error) if 'postal_code' in errors: if errors['postal_code'] == 'invalid': example = validation_data.postal_code_example if example: example = example.replace(',', ', ') error = _( 'Invalid postal code. Please follow the format: %(example)s') % { 'example': example} else: error = _('Invalid postal code.') else: error = error_messages[errors['postal_code']] % { 'value': postal_code} self.add_error('postal_code', error) if to_office and not office: self.add_error('office', 'Invalid office') elif not to_office and not street_address: self.add_error('street_address_1', 'Invalid address')
def validate_areas(self, country_code, country_area, city, city_area, postal_code, street_address): error_messages = defaultdict( lambda: _('Invalid value'), self.fields['country'].error_messages) errors, validation_data = validate_areas( country_code, country_area, city, city_area, postal_code, street_address) if 'country' in errors: self.add_error('country', _( '%s is not supported country code.') % country_code) if 'street_address' in errors: error = error_messages[errors['street_address']] % { 'value': street_address} self.add_error('street_address_1', error) if 'city' in errors and errors['city'] == 'required': error = error_messages[errors['city']] % { 'value': city} self.add_error('city', error) if 'city_area' in errors and errors['city_area'] == 'required': error = error_messages[errors['city_area']] % { 'value': city_area} self.add_error('city_area', error) if 'country_area' in errors and errors['country_area'] == 'required': error = error_messages[errors['country_area']] % { 'value': country_area} self.add_error('country_area', error) if 'postal_code' in errors: if errors['postal_code'] == 'invalid': example = validation_data.postal_code_example if example: example = example.replace(',', ', ') error = _( 'Invalid postal code. Please follow the format: %(example)s') % { 'example': example} else: error = _('Invalid postal code.') else: error = error_messages[errors['postal_code']] % { 'value': postal_code} self.add_error('postal_code', error)
def test_validate_areas_errors(kwargs, errors): assert validate_areas(**kwargs)[0] == errors
def test_validate_known_addresses(kwargs): assert validate_areas(**kwargs)[0] == {}