Files
deb-python-sqlalchemy-utils/tests/primitives/test_country.py
Konsta Vesterinen 204aba376d Fix babel primitive types
- Make babel dependent primitive types to use Locale('en') for data
validation instead of current locale. Using current locale leads to
infinite recursion in cases where the loaded data has dependency to
the loaded object's locale.
2015-06-17 19:36:46 +03:00

68 lines
1.9 KiB
Python

import six
from pytest import mark, raises
from sqlalchemy_utils import Country, i18n
@mark.skipif('i18n.babel is None')
class TestCountry(object):
def setup_method(self, method):
i18n.get_locale = lambda: i18n.babel.Locale('en')
def test_init(self):
assert Country(u'FI') == Country(Country(u'FI'))
def test_constructor_with_wrong_type(self):
with raises(TypeError) as e:
Country(None)
assert str(e.value) == (
"Country() argument must be a string or a country, not 'NoneType'"
)
def test_constructor_with_invalid_code(self):
with raises(ValueError) as e:
Country('SomeUnknownCode')
assert str(e.value) == (
'Could not convert string to country code: SomeUnknownCode'
)
@mark.parametrize(
'code',
(
'FI',
'US',
)
)
def test_validate_with_valid_codes(self, code):
Country.validate(code)
def test_validate_with_invalid_code(self):
with raises(ValueError) as e:
Country.validate('SomeUnknownCode')
assert str(e.value) == (
'Could not convert string to country code: SomeUnknownCode'
)
def test_equality_operator(self):
assert Country(u'FI') == u'FI'
assert u'FI' == Country(u'FI')
assert Country(u'FI') == Country(u'FI')
def test_non_equality_operator(self):
assert Country(u'FI') != u'sv'
assert not (Country(u'FI') != u'FI')
def test_hash(self):
return hash(Country('FI')) == hash('FI')
def test_repr(self):
return repr(Country('FI')) == "Country('FI')"
def test_unicode(self):
country = Country('FI')
assert six.text_type(country) == u'Finland'
def test_str(self):
country = Country('FI')
assert str(country) == 'Finland'