[ADD] test_translation_import: add new test

This test also fails before the module extraction commit as the code
translations like the one for 'Ijkl' have no 'module' value during the reimport
and are ignored by the following search

closes odoo/odoo#32022

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
This commit is contained in:
Martin Trigaux
2019-03-29 14:50:56 +00:00
parent 257ccdf83c
commit c9d01b136f
3 changed files with 108 additions and 12 deletions
@@ -21,8 +21,8 @@ msgstr "Ijkl in belgian french"
#. module: test_translation_import
#: model:ir.model,name:test_translation_import.model_test_translation_import
msgid "test.translation.import"
msgstr "test.translation.import in belgian french"
msgid "Test: Translation Import"
msgstr "Test: Translation Import in belgian french"
#. module: test_translation_import
#: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name
@@ -29,6 +29,37 @@ msgstr ""
msgid "1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB"
msgstr ""
#. module: test_translation_import
#: code:addons/test_translation_import/models.py:21
#, python-format
msgid "Accounting"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__create_uid
msgid "Created by"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__create_date
msgid "Created on"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__display_name
msgid "Display Name"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name
msgid "Efgh"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__id
msgid "ID"
msgstr ""
#. module: test_translation_import
#: code:addons/test_translation_import/models.py:14
#, python-format
@@ -36,13 +67,29 @@ msgid "Ijkl"
msgstr ""
#. module: test_translation_import
#: model:ir.model,name:test_translation_import.model_test_translation_import
msgid "test.translation.import"
#: code:addons/test_translation_import/models.py:19
#, python-format
msgid "Klingon"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name
msgid "Efgh"
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import____last_update
msgid "Last Modified on"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__write_uid
msgid "Last Updated by"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__write_date
msgid "Last Updated on"
msgstr ""
#. module: test_translation_import
#: model:ir.ui.menu,name:test_translation_import.menu_test_translation
msgid "Test translation"
msgstr ""
#. module: test_translation_import
@@ -51,19 +98,16 @@ msgstr ""
msgid "Test translation import"
msgstr ""
#. module: test_translation_import
#: model:ir.ui.menu,name:test_translation_import.menu_test_translation
msgid "Test translation"
msgstr ""
#. module: test_translation_import
#: code:addons/base/models/arthur.py:42
#: code:addons/base/models/arthur.py:43
#, python-format
msgid "Test translation with two code lines"
msgstr ""
#. module: test_translation_import
#: code:addons/base/models/ford.py:42
#, python-format
msgid "Test translation with a code type but different line number in pot"
msgstr ""
@@ -71,5 +115,11 @@ msgstr ""
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__other_name
#: code:addons/base/models/marvin.py:42
#: code:addons/base/models/trillian.py:42
#, python-format
msgid "Test translation with two code type and model"
msgstr ""
#. module: test_translation_import
#: model:ir.model,name:test_translation_import.model_test_translation_import
msgid "Test: Translation Import"
msgstr ""
@@ -5,7 +5,7 @@ import base64
import io
import odoo
from odoo.tests import common
from odoo.tests import common, tagged
from odoo.tools.misc import file_open, mute_logger
from odoo.tools.translate import _
@@ -179,3 +179,49 @@ class TestTermCount(common.TransactionCase):
self.env.context = dict(self.env.context, lang="dot")
self.assertEqual(_("Accounting"), "samva", "The code translation was not applied")
@tagged('post_install', '-at_install')
class TestTranslationFlow(common.TransactionCase):
def test_export_import(self):
""" Ensure export+import gives the same result as loading a language """
# load language and generate missing terms to create missing empty terms
with mute_logger('odoo.addons.base.models.ir_translation'):
self.env["base.language.install"].create({'lang': 'fr_FR'}).lang_install()
self.env["base.update.translations"].create({'lang': 'fr_FR'}).act_update()
translations = self.env["ir.translation"].search([
('lang', '=', 'fr_FR'),
('module', '=', 'test_translation_import')
])
# minus 3 as the original fr.po contains 3 fake code translations (cf
# test_no_duplicate test) which are not found by babel_extract_terms
init_translation_count = len(translations) - 3
module = self.env.ref('base.module_test_translation_import')
export = self.env["base.language.export"].create({
'lang': 'fr_FR',
'format': 'po',
'modules': [(6, 0, [module.id])]
})
export.act_getfile()
po_file = export.data
self.assertIsNotNone(po_file)
translations.unlink()
import_fr = self.env["base.language.import"].create({
'name': 'French',
'code': 'fr_FR',
'data': export.data,
'filename': export.name,
})
with mute_logger('odoo.addons.base.models.res_lang'):
import_fr.with_context(create_empty_translation=True).import_lang()
import_translation = self.env["ir.translation"].search([
('lang', '=', 'fr_FR'),
('module', '=', 'test_translation_import')
])
self.assertEqual(init_translation_count, len(import_translation))