From c9d01b136f1ac5ca3ad193ea42204d856fda155f Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 28 Mar 2019 12:32:31 +0000 Subject: [PATCH] [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) --- .../test_translation_import/i18n/fr_BE.po | 4 +- .../i18n/test_translation_import.pot | 68 ++++++++++++++++--- .../tests/test_term_count.py | 48 ++++++++++++- 3 files changed, 108 insertions(+), 12 deletions(-) diff --git a/odoo/addons/test_translation_import/i18n/fr_BE.po b/odoo/addons/test_translation_import/i18n/fr_BE.po index 1d41cc94dcb..f60b8342c5b 100644 --- a/odoo/addons/test_translation_import/i18n/fr_BE.po +++ b/odoo/addons/test_translation_import/i18n/fr_BE.po @@ -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 diff --git a/odoo/addons/test_translation_import/i18n/test_translation_import.pot b/odoo/addons/test_translation_import/i18n/test_translation_import.pot index 39333d2b363..c2ffe5b20ce 100644 --- a/odoo/addons/test_translation_import/i18n/test_translation_import.pot +++ b/odoo/addons/test_translation_import/i18n/test_translation_import.pot @@ -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 "" diff --git a/odoo/addons/test_translation_import/tests/test_term_count.py b/odoo/addons/test_translation_import/tests/test_term_count.py index 936a9c93c61..58716ad6ec5 100644 --- a/odoo/addons/test_translation_import/tests/test_term_count.py +++ b/odoo/addons/test_translation_import/tests/test_term_count.py @@ -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))