示例#1
0
 def test_invalid_override(self):
     translator = Translator(
         Translation,
         session=None,
         language=None,
     )
     with pytest.raises(ValueError) as exc:
         translator.translate(None, strategy='invalid ಠ_ಠ')
     assert 'Invalid strategy `invalid ಠ_ಠ`' in unicode(exc)
示例#2
0
    def test_translate_structure(self, session):
        translation = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        session.add(translation)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        structure = {
            'int': 1,
            'str': 'str',
            'list': [1, 'str', translatable],
            'translatable': translatable,
        }

        translation = translator.translate(structure)
        assert translation == {
            'int': 1,
            'str': 'str',
            'list': [1, 'str', 'translation'],
            'translatable': 'translation',
        }
示例#3
0
    def test_none_value(self, session):
        translator = Translator(Translation, session, SAMPLE_LANGUAGE)
        translatable = TranslatableString(
            context=SAMPLE_CONTEXT, message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        translation is None
示例#4
0
文件: test_models.py 项目: timbu/taal
    def test_translate_structure(self, session):
        translation = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        session.add(translation)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        structure = {
            'int': 1,
            'str': 'str',
            'list': [1, 'str', translatable],
            'translatable': translatable,
        }

        translation = translator.translate(structure)
        assert translation == {
            'int': 1,
            'str': 'str',
            'list': [1, 'str', 'translation'],
            'translatable': 'translation',
        }
    def test_translate_missing(self, session):
        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        translation = translator.translate(translatable)
        translation is None
示例#6
0
    def test_none_value(self, session):
        translator = Translator(Translation, session, SAMPLE_LANGUAGE)
        translatable = TranslatableString(context=SAMPLE_CONTEXT,
                                          message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        translation is None
示例#7
0
    def test_case_sensitivity(self, session):
        translation_lower = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        translation_upper = Translation(
            context='CONTEXT', message_id='message_id',
            language='language', value='translation')
        session.add(translation_upper)
        session.add(translation_lower)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        # this shuold just not raise
        translator.translate(translatable)
示例#8
0
文件: test_models.py 项目: timbu/taal
    def test_case_sensitivity(self, session):
        translation_lower = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        translation_upper = Translation(
            context='CONTEXT', message_id='message_id',
            language='language', value='translation')
        session.add(translation_upper)
        session.add(translation_lower)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        # this shuold just not raise
        translator.translate(translatable)
    def test_translate_missing_debug(self, session):
        translator = Translator(
            Translation, session, 'language', debug_output=True)
        translatable = TranslatableString(
            context='context', message_id='message_id')

        translation = translator.translate(translatable)
        assert "[Translation missing" in translation
示例#10
0
    def test_debug_value(self, session):
        translator = Translator(Translation,
                                session,
                                SAMPLE_LANGUAGE,
                                strategy=Translator.strategies.DEBUG_VALUE)
        translatable = TranslatableString(context=SAMPLE_CONTEXT,
                                          message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert "[Translation missing" in translation
示例#11
0
    def test_sentinel_value(self, session):
        translator = Translator(Translation,
                                session,
                                SAMPLE_LANGUAGE,
                                strategy=Translator.strategies.SENTINEL_VALUE)
        translatable = TranslatableString(context=SAMPLE_CONTEXT,
                                          message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert translation is TRANSLATION_MISSING
示例#12
0
    def test_debug_value(self, session):
        translator = Translator(
            Translation,
            session,
            SAMPLE_LANGUAGE,
            strategy=Translator.strategies.DEBUG_VALUE
        )
        translatable = TranslatableString(
            context=SAMPLE_CONTEXT, message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert "[Translation missing" in translation
示例#13
0
    def test_sentinel_value(self, session):
        translator = Translator(
            Translation,
            session,
            SAMPLE_LANGUAGE,
            strategy=Translator.strategies.SENTINEL_VALUE
        )
        translatable = TranslatableString(
            context=SAMPLE_CONTEXT, message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert translation is TRANSLATION_MISSING
示例#14
0
    def test_save_translation(self, session, session_cls):
        translator = Translator(Translation, session, 'language')
        params = {
            'context': 'context',
            'message_id': 'message_id',
        }
        translatable = TranslatableString(
            pending_value='translation', **params)
        translator.save_translation(translatable)

        read_translatable = TranslatableString(**params)
        translation = translator.translate(read_translatable)
        assert translation == 'translation'
示例#15
0
文件: test_models.py 项目: timbu/taal
    def test_translate(self, session):
        translation = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        session.add(translation)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        translation = translator.translate(translatable)
        assert translation == 'translation'
示例#16
0
文件: test_models.py 项目: timbu/taal
    def test_save_translation(self, session, session_cls):
        translator = Translator(Translation, session, 'language')
        params = {
            'context': 'context',
            'message_id': 'message_id',
        }
        translatable = TranslatableString(
            pending_value='translation', **params)
        translator.save_translation(translatable)

        read_translatable = TranslatableString(**params)
        translation = translator.translate(read_translatable)
        assert translation == 'translation'
示例#17
0
    def test_translate(self, session):
        translation = Translation(
            context='context', message_id='message_id',
            language='language', value='translation')
        session.add(translation)
        session.commit()

        translator = Translator(Translation, session, 'language')
        translatable = TranslatableString(
            context='context', message_id='message_id')

        translation = translator.translate(translatable)
        assert translation == 'translation'
def test_update_removed_values(
        session, bound_manager, change_instance_hierarchy):
    manager = bound_manager
    obj = change_instance_hierarchy

    retrieved = manager.deserialize(manager.serialize(obj))
    new = manager.change_instance_type(retrieved, 'New', {'old': 'new'})

    data = manager.serialize(new)
    translator = Translator(Translation, session, 'language')
    translated = translator.translate(data)

    assert translated['common'] == 'common'
    assert session.query(Translation).count() == 1
示例#19
0
def test_update_unsetting_existing_values(
        session, bound_manager, change_instance_hierarchy):
    manager = bound_manager
    obj = change_instance_hierarchy

    retrieved = manager.deserialize(manager.serialize(obj))
    new = manager.change_instance_type(retrieved, 'New', {'common': None})

    data = manager.serialize(new)
    translator = Translator(Translation, session, 'language')
    translated = translator.translate(data)

    assert translated['common'] is None
    assert session.query(Translation).count() == 0
示例#20
0
def test_update_removed_values(
        session, bound_manager, change_instance_hierarchy):
    manager = bound_manager
    obj = change_instance_hierarchy

    retrieved = manager.deserialize(manager.serialize(obj))
    new = manager.change_instance_type(retrieved, 'New', {'old': 'new'})

    data = manager.serialize(new)
    translator = Translator(Translation, session, 'language')
    translated = translator.translate(data)

    assert translated['common'] == 'common'
    assert session.query(Translation).count() == 1
示例#21
0
def test_get_translation(session, manager):
    manager.save(CustomFieldsEntity)
    item = CustomFieldsEntity()
    manager.save(item)

    create_translation_for_entity(session, manager, 'english', item, 'name',
                                  'English name')

    context = get_context(manager, item, 'name')
    message_id = get_message_id(manager, item)
    translatable = TranslatableString(context=context, message_id=message_id)

    translator = Translator(Translation, session, 'english')
    translated_data = translator.translate(translatable)

    assert translated_data == 'English name'
示例#22
0
def test_translating_class_labels(session, translating_type_heirarchy,
                                  bound_manager):
    manager = bound_manager

    translator = Translator(Translation, session, 'en')
    translatable = TranslatableString(
        context=TYPE_CONTEXT,
        message_id='Entity', pending_value='English Entity')

    translator.save_translation(translatable)
    translator.bind(manager)

    hierarchy = manager.get_labeled_type_hierarchy()
    entity = next(hierarchy)

    translated = translator.translate(entity[1])
    assert translated == 'English Entity'
示例#23
0
def test_get_translation(session, manager):
    manager.save(CustomFieldsEntity)
    item = CustomFieldsEntity()
    manager.save(item)

    create_translation_for_entity(
        session, manager, 'english', item, 'name', 'English name')

    context = get_context(manager, item, 'name')
    message_id = get_message_id(manager, item)
    translatable = TranslatableString(
        context=context, message_id=message_id)

    translator = Translator(Translation, session, 'english')
    translated_data = translator.translate(translatable)

    assert translated_data == 'English name'
示例#24
0
def test_translating_class_labels(session, translating_type_heirarchy,
                                  bound_manager):
    manager = bound_manager

    translator = Translator(Translation, session, 'en')
    translatable = TranslatableString(
        context=TYPE_CONTEXT,
        message_id='Entity', pending_value='English Entity')

    translator.save_translation(translatable)
    translator.bind(manager)

    hierarchy = manager.get_labeled_type_hierarchy()
    entity = next(hierarchy)

    translated = translator.translate(entity[1])
    assert translated == 'English Entity'
def test_change_instance_type(
        bound_manager, session, change_instance_hierarchy):
    manager = bound_manager
    obj = change_instance_hierarchy

    assert session.query(Translation).count() == 2

    retrieved = manager.deserialize(manager.serialize(obj))
    new = manager.change_instance_type(retrieved, 'New')

    # make sure we reset our session
    session.rollback()

    data = manager.serialize(new)
    translator = Translator(Translation, session, 'language')
    translated = translator.translate(data)

    assert translated['common'] == 'common'
    assert session.query(Translation).count() == 1
示例#26
0
def test_change_instance_type(
        bound_manager, session, change_instance_hierarchy):
    manager = bound_manager
    obj = change_instance_hierarchy

    assert session.query(Translation).count() == 2

    retrieved = manager.deserialize(manager.serialize(obj))
    new = manager.change_instance_type(retrieved, 'New')

    # make sure we reset our session
    session.rollback()

    data = manager.serialize(new)
    translator = Translator(Translation, session, 'language')
    translated = translator.translate(data)

    assert translated['common'] == 'common'
    assert session.query(Translation).count() == 1
示例#27
0
    def test_update_translation(self, session, session_cls):
        translator = Translator(Translation, session, 'language')
        params = {
            'context': 'context',
            'message_id': 'message_id',
        }
        translatable = TranslatableString(
            pending_value='translation', **params)
        translator.save_translation(translatable)

        new_translator = Translator(
            Translation, session_cls(), 'language')
        new_translatable = TranslatableString(
            pending_value='new translation', **params)
        new_translator.save_translation(new_translatable)

        read_translatable = TranslatableString(**params)
        translation = translator.translate(read_translatable)
        assert translation == 'new translation'
        assert session.query(Translation).count() == 1
示例#28
0
文件: test_models.py 项目: timbu/taal
    def test_update_translation(self, session, session_cls):
        translator = Translator(Translation, session, 'language')
        params = {
            'context': 'context',
            'message_id': 'message_id',
        }
        translatable = TranslatableString(
            pending_value='translation', **params)
        translator.save_translation(translatable)

        new_translator = Translator(
            Translation, session_cls(), 'language')
        new_translatable = TranslatableString(
            pending_value='new translation', **params)
        new_translator.save_translation(new_translatable)

        read_translatable = TranslatableString(**params)
        translation = translator.translate(read_translatable)
        assert translation == 'new translation'
        assert session.query(Translation).count() == 1
示例#29
0
    def test_en_fallback(self, session):
        translation = Translation(
            context=SAMPLE_CONTEXT,
            message_id=SAMPLE_MESSAGE_ID,
            language='en',
            value='en fallback',
        )
        session.add(translation)
        session.commit()
        en_fallback_strategy = FallbackLangStrategy('en')
        translator = Translator(
            Translation,
            session,
            SAMPLE_LANGUAGE,
            strategy=en_fallback_strategy,
        )

        translatable = TranslatableString(context=SAMPLE_CONTEXT,
                                          message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert translation == 'en fallback'
示例#30
0
    def test_en_fallback(self, session):
        translation = Translation(
            context=SAMPLE_CONTEXT,
            message_id=SAMPLE_MESSAGE_ID,
            language='en',
            value='en fallback',
        )
        session.add(translation)
        session.commit()
        en_fallback_strategy = FallbackLangStrategy('en')
        translator = Translator(
            Translation,
            session,
            SAMPLE_LANGUAGE,
            strategy=en_fallback_strategy,
        )

        translatable = TranslatableString(
            context=SAMPLE_CONTEXT, message_id=SAMPLE_MESSAGE_ID)

        translation = translator.translate(translatable)
        assert translation == 'en fallback'
示例#31
0
def test_load_and_save(translating_manager, session):
    translator = Translator(Translation, session, 'language')
    manager = translating_manager
    translator.bind(manager)

    manager.save(CustomFieldsEntity)
    obj = CustomFieldsEntity(id=1, identifier='foo', name='name')
    manager.save(obj)
    loaded = manager.serialize(
        manager.get(CustomFieldsEntity, id=1)
    )
    loaded['identifier'] = 'bar'

    manager.save(
        manager.deserialize(loaded)
    )

    reloaded = manager.get(CustomFieldsEntity, id=1)

    assert translator.translate(
        manager.serialize(reloaded)['name']
    ) == 'name'
示例#32
0
def test_load_and_save(translating_manager, session):
    translator = Translator(Translation, session, 'language')
    manager = translating_manager
    translator.bind(manager)

    manager.save(CustomFieldsEntity)
    obj = CustomFieldsEntity(id=1, identifier='foo', name='name')
    manager.save(obj)
    loaded = manager.serialize(
        manager.get(CustomFieldsEntity, id=1)
    )
    loaded['identifier'] = 'bar'

    manager.save(
        manager.deserialize(loaded)
    )

    reloaded = manager.get(CustomFieldsEntity, id=1)

    assert translator.translate(
        manager.serialize(reloaded)['name']
    ) == 'name'
示例#33
0
def test_serialize(session, translating_type_heirarchy, bound_manager):
    manager = bound_manager

    translator = Translator(Translation, session, 'en')
    translator.bind(manager)

    obj = CustomFieldsEntity(id=1, name='English name', extra1="", extra2=None)
    manager.save(CustomFieldsEntity)
    manager.save(obj)

    retrieved = manager.get(CustomFieldsEntity, id=1)
    assert retrieved.name == PlaceholderValue
    assert retrieved.extra1 == PlaceholderValue
    assert retrieved.extra2 is None

    serialized = manager.serialize(retrieved)
    assert isinstance(serialized['name'], TranslatableString)
    assert isinstance(serialized['extra1'], TranslatableString)
    assert serialized['extra2'] is None

    translated = translator.translate(serialized)
    assert translated['name'] == 'English name'
    assert translated['extra1'] == ""
    assert translated['extra2'] is None
示例#34
0
def test_serialize(session, translating_type_heirarchy, bound_manager):
    manager = bound_manager

    translator = Translator(Translation, session, 'en')
    translator.bind(manager)

    obj = CustomFieldsEntity(id=1, name='English name', extra1="", extra2=None)
    manager.save(CustomFieldsEntity)
    manager.save(obj)

    retrieved = manager.get(CustomFieldsEntity, id=1)
    assert retrieved.name == PlaceholderValue
    assert retrieved.extra1 == PlaceholderValue
    assert retrieved.extra2 is None

    serialized = manager.serialize(retrieved)
    assert isinstance(serialized['name'], TranslatableString)
    assert isinstance(serialized['extra1'], TranslatableString)
    assert serialized['extra2'] is None

    translated = translator.translate(serialized)
    assert translated['name'] == 'English name'
    assert translated['extra1'] == ""
    assert translated['extra2'] is None
示例#35
0
def test_translate_tuple():
    data = (object(), object())

    translator = Translator(None, None, None)
    assert translator.translate(data) == data
示例#36
0
def test_translate_list():
    data = [object(), object()]

    translator = Translator(None, None, None)
    assert translator.translate(data) == data
示例#37
0
def test_translate_dict():
    data = {object(): object()}

    translator = Translator(None, None, None)
    assert translator.translate(data) == data
def test_translate_dict():
    data = {object(): object()}

    translator = Translator(None, None, None)
    assert translator.translate(data) == data
def test_translate_list():
    data = [object(), object()]

    translator = Translator(None, None, None)
    assert translator.translate(data) == data
def test_translate_tuple():
    data = (object(), object())

    translator = Translator(None, None, None)
    assert translator.translate(data) == data