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)
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_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
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
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
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
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
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
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
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
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'
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
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
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'
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_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'
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
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
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'
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'
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'
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
def test_translate_tuple(): 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_dict(): data = {object(): object()} translator = Translator(None, None, None) assert translator.translate(data) == data