コード例 #1
0
ファイル: test_types.py プロジェクト: Afey/schematics
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'})
コード例 #2
0
ファイル: test_types.py プロジェクト: rpk/schematics
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'
コード例 #3
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingualstring_should_validate_length():
    MultilingualStringType(min_length=3).validate({'en_US': 'foo'})
    MultilingualStringType(max_length=3).validate({'en_US': 'foo'})

    with pytest.raises(ValidationError):
        MultilingualStringType(min_length=4).validate({'en_US': 'foo'})

    with pytest.raises(ValidationError):
        MultilingualStringType(max_length=2).validate({'en_US': 'foo'})
コード例 #4
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingualstring_should_validate_regex():
    MultilingualStringType(regex='^[a-z]*$').validate({'en_US': 'foo'})

    with pytest.raises(ValidationError):
        MultilingualStringType(regex='^[a-z]*$').validate({'en_US': '123'})

    with pytest.raises(ValidationError):
        MultilingualStringType(locale_regex='^\d*$').validate({'en_US': 'foo'})

    assert MultilingualStringType(locale_regex=None).validate_regex(
        {'en_US': 'foo'}) is None
コード例 #5
0
ファイル: test_types.py プロジェクト: Afey/schematics
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'
コード例 #6
0
class Model(Entity):
    name = StringType(required=True, deserialize_from=('name', 'model_name'))
    parameters = ListType(ModelType(ModelParameter),
                          default=None,
                          deserialize_from=('parameters', 'params'))
    file = StringType(deserialize_from=('file', 'model_file', 'filename'))
    template = StringType()
    display_options = DictType(BooleanType, default=None)
    output_options = DictType(ListType(StringType), default={})

    # Multilingual fields
    title = MultilingualStringType(default_locale=settings.FALLBACK_LOCALE)
    description = MultilingualStringType(
        default_locale=settings.FALLBACK_LOCALE)
    instructions = DictType(
        MultilingualStringType(default_locale=settings.FALLBACK_LOCALE))

    class Options:
        roles = {'DTO': blacklist('file', 'template')}
        serialize_when_none = False
コード例 #7
0
class ModelParameter(Entity):
    id = StringType(required=True)
    type = StringType(default='number')
    options = DictType(StringType, default=None)

    # Multilingual fields
    metadata = DictType(
        MultilingualStringType(default_locale=settings.FALLBACK_LOCALE))

    class Options:
        serialize_when_none = False
コード例 #8
0
ファイル: test_types.py プロジェクト: rpk/schematics
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'})
コード例 #9
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingualstring_should_only_take_certain_types():
    mls = MultilingualStringType()

    mls(None)
    mls({})

    with pytest.raises(ValueError):
        mls(123)

    with pytest.raises(ValueError):
        mls([])

    with pytest.raises(ValueError):
        mls('foo')
コード例 #10
0
ファイル: test_types.py プロジェクト: rpk/schematics
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'
コード例 #11
0
ファイル: test_types.py プロジェクト: Afey/schematics
def test_multilingualstring_should_handle_none():
    mls = MultilingualStringType(default_locale='en_US')

    assert mls.to_primitive(None) is None
コード例 #12
0
ファイル: test_types.py プロジェクト: Afey/schematics
def test_multilingualstring_should_handle_castable_values():
    mls = MultilingualStringType(default_locale='en_US')

    assert mls.to_primitive({'en_US': 123}) == u'123'
コード例 #13
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingual_string_should_require_a_locale():
    mls = MultilingualStringType()

    with pytest.raises(ConversionError):
        mls.to_primitive({'foo': 'bar'})
コード例 #14
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingualstring_should_handle_castable_values():
    mls = MultilingualStringType(default_locale='en_US')

    assert mls.to_primitive({'en_US': 123}) == u'123'
コード例 #15
0
ファイル: test_types.py プロジェクト: rpk/schematics
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'
コード例 #16
0
ファイル: test_types.py プロジェクト: rpk/schematics
def test_multilingualstring_should_handle_none():
    mls = MultilingualStringType(default_locale='en_US')

    assert mls.to_primitive(None) is None
コード例 #17
0
ファイル: test_types.py プロジェクト: Afey/schematics
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'
コード例 #18
0
ファイル: test_types.py プロジェクト: Afey/schematics
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'
コード例 #19
0
ファイル: test_types.py プロジェクト: Afey/schematics
def test_multilingual_string_should_require_a_locale():
    mls = MultilingualStringType()

    with pytest.raises(ConversionError):
        mls.to_primitive({'foo': 'bar'})
コード例 #20
0
 class Animal(XMLModel):
     text = MultilingualStringType()