Project_Camper/venv/lib/python3.7/site-packages/address/tests/test_forms.py

95 lines
3.2 KiB
Python
Raw Normal View History

2020-12-07 21:41:55 +01:00
from django.test import TestCase
from django.forms import ValidationError, Form
from address.forms import AddressField, AddressWidget
from address.models import Address
class TestForm(Form):
address = AddressField()
class AddressFieldTestCase(TestCase):
def setUp(self):
self.form = TestForm()
self.field = self.form.base_fields['address']
self.missing_state = {
'country': 'UK',
'locality': 'Somewhere',
'postal_code': '34904',
'route': 'A street?',
'street_number': '3',
'raw': '3 A street?, Somewhere, UK',
}
def test_to_python_none(self):
self.assertEqual(self.field.to_python(None), None)
def test_to_python_empty(self):
self.assertEqual(self.field.to_python(''), None)
def test_to_python_invalid_lat_lng(self):
self.assertRaises(ValidationError, self.field.to_python, {'latitude': 'x'})
self.assertRaises(ValidationError, self.field.to_python, {'longitude': 'x'})
def test_to_python_invalid_empty_lat_lng(self):
self.assertEqual(self.field.to_python({'latitude': ''}), None)
self.assertEqual(self.field.to_python({'longitude': ''}), None)
def test_to_python_no_locality(self):
input = {
'country': 'United States',
'country_code': 'US',
'state': 'New York',
'state_code': 'NY',
'locality': '',
'sublocality': 'Brooklyn',
'postal_code': '11201',
'route': 'Joralemon St',
'street_number': '209',
'raw': '209 Joralemon Street, Brooklyn, NY, United States'
}
res = self.field.to_python(input)
self.assertEqual(res.locality.name, 'Brooklyn')
def test_to_python_postal_town(self):
'''UK addresses with no `locality`, but a populated `postal_town`, should use the
`postal_town` as the `locality`'''
data = {
'raw': 'High Street, Leamington Spa',
'route': 'High Street',
'postal_town': 'Leamington Spa',
'state': 'England',
'state_code': 'England',
'country': 'United Kingdom',
'country_code': 'GB',
'postal_code': 'CV31',
'formatted': 'High St, Royal Leamington Spa, Leamington Spa CV31, UK'
}
address = self.field.to_python(data)
self.assertIsNotNone(address.locality)
self.assertEqual(address.locality.name, data["postal_town"])
# TODO: Fix
# def test_to_python_empty_state(self):
# val = self.field.to_python(self.missing_state)
# self.assertTrue(isinstance(val, Address))
# self.assertNotEqual(val.locality, None)
def test_to_python(self):
res = self.field.to_python({'raw': 'Someplace'})
self.assertEqual(res.raw, 'Someplace')
def test_render(self):
html = self.form.as_table()
# TODO: Check html
class AddressWidgetTestCase(TestCase):
def test_attributes_set_correctly(self):
wid = AddressWidget(attrs={'size': '150'})
self.assertEqual(wid.attrs['size'], '150')
html = wid.render('test', None)
self.assertNotEqual(html.find('size="150"'), -1)