def test_multilingual_string_without_matching_locale_should_explode(): mls = MultilingualStringType() with pytest.raises(ConversionError): mls.to_primitive({'fr_FR': 'serpent'}) with pytest.raises(ConversionError): mls.to_primitive({'en_US': 'snake'}, context={'locale': 'fr_FR'})
def test_multilingual_string_should_accept_lists_of_locales(): strings = { 'en_US': 'snake', 'fr_FR': 'serpent', 'es_MX': 'serpiente', } mls = MultilingualStringType(default_locale=['foo', 'fr_FR', 'es_MX']) assert mls.to_primitive(strings) == 'serpent' assert mls.to_primitive(strings, context={'locale': ['es_MX', 'bar']}) == 'serpiente' mls = MultilingualStringType() assert mls.to_primitive(strings, context={'locale': ['foo', 'es_MX', 'fr_FR']}) == 'serpiente'
def test_multilingual_string_should_emit_string_with_explicit_locale(): mls = MultilingualStringType(default_locale='en_US') assert mls.to_primitive({ 'en_US': 'snake', 'fr_FR': 'serpent' }, context={'locale': 'fr_FR'}) == 'serpent'
def test_multilingual_string_should_require_a_locale(): mls = MultilingualStringType() with pytest.raises(ConversionError): mls.to_primitive({'foo': 'bar'})
def test_multilingualstring_should_enforce_noncastable_values(): mls = MultilingualStringType(default_locale='en_US') with pytest.raises(ConversionError): mls.to_primitive({'en_US': 123.0}) == u'123'
def test_multilingualstring_should_handle_castable_values(): mls = MultilingualStringType(default_locale='en_US') assert mls.to_primitive({'en_US': 123}) == u'123'
def test_multilingualstring_should_handle_none(): mls = MultilingualStringType(default_locale='en_US') assert mls.to_primitive(None) is None
def test_multilingual_string_should_emit_string_with_explicit_locale(): mls = MultilingualStringType(default_locale='en_US') assert mls.to_primitive( {'en_US': 'snake', 'fr_FR': 'serpent'}, context={'locale': 'fr_FR'}) == 'serpent'