summaryrefslogtreecommitdiff
path: root/odoo/addons/base/tests
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-28 17:44:46 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-28 17:44:46 +0100
commitefe7ca16b77edce73bf538ccb70678a52afdfd1d (patch)
treead5af92d3bb397fd58fd861e6ce8e3abd2902ec6 /odoo/addons/base/tests
parentb09f624f20781d65baf2060df40383898e6f86e5 (diff)
parentbb6f6c57f97b091f3f68161039de980eb9ce739d (diff)
[MERGE] forward port branch 11.0 up to bb6f6c57f97
Diffstat (limited to 'odoo/addons/base/tests')
-rw-r--r--odoo/addons/base/tests/test_translate.py82
1 files changed, 50 insertions, 32 deletions
diff --git a/odoo/addons/base/tests/test_translate.py b/odoo/addons/base/tests/test_translate.py
index e8a76b12c86..399508e9fcd 100644
--- a/odoo/addons/base/tests/test_translate.py
+++ b/odoo/addons/base/tests/test_translate.py
@@ -310,30 +310,36 @@ class TestTranslation(TransactionCase):
class TestXMLTranslation(TransactionCase):
def setUp(self):
super(TestXMLTranslation, self).setUp()
- self.env['ir.translation'].load_module_terms(['base'], ['fr_FR'])
+ self.env['ir.translation'].load_module_terms(['base'], ['fr_FR', 'nl_NL'])
+
+ def create_view(self, archf, terms, **kwargs):
+ view = self.env['ir.ui.view'].create({
+ 'name': 'test',
+ 'model': 'res.partner',
+ 'arch': archf % terms,
+ })
+ for lang, trans_terms in kwargs.items():
+ for src, val in pycompat.izip(terms, trans_terms):
+ self.env['ir.translation'].create({
+ 'type': 'model',
+ 'name': 'ir.ui.view,arch_db',
+ 'lang': lang,
+ 'res_id': view.id,
+ 'src': src,
+ 'value': val,
+ 'state': 'translated',
+ })
+ return view
def test_copy(self):
""" Create a simple view, fill in translations, and copy it. """
- env_en = self.env(context={})
- env_fr = self.env(context={'lang': 'fr_FR'})
-
archf = '<form string="%s"><div>%s</div><div>%s</div></form>'
terms_en = ('Knife', 'Fork', 'Spoon')
terms_fr = ('Couteau', 'Fourchette', 'Cuiller')
- view0 = self.env['ir.ui.view'].create({
- 'name': 'test',
- 'model': 'res.partner',
- 'arch': archf % terms_en,
- })
- for src, value in list(pycompat.izip(terms_en, terms_fr)):
- self.env['ir.translation'].create({
- 'type': 'model',
- 'name': 'ir.ui.view,arch_db',
- 'lang': 'fr_FR',
- 'res_id': view0.id,
- 'src': src,
- 'value': value,
- })
+ view0 = self.create_view(archf, terms_en, fr_FR=terms_fr)
+
+ env_en = self.env(context={})
+ env_fr = self.env(context={'lang': 'fr_FR'})
# check translated field
self.assertEqual(view0.with_env(env_en).arch_db, archf % terms_en)
@@ -360,17 +366,29 @@ class TestXMLTranslation(TransactionCase):
archf = '<form string="%s"><div>%s</div><div>%s</div></form>'
terms_en = ('Knife', 'Fork', 'Spoon')
terms_fr = (' Couteau', 'Fourchette ', ' Cuiller ')
- view0 = self.env['ir.ui.view'].create({
- 'name': 'test',
- 'model': 'res.partner',
- 'arch': archf % terms_en,
- })
- for src, value in list(pycompat.izip(terms_en, terms_fr)):
- self.env['ir.translation'].create({
- 'type': 'model',
- 'name': 'ir.ui.view,arch_db',
- 'lang': 'fr_FR',
- 'res_id': view0.id,
- 'src': src,
- 'value': value,
- })
+ self.create_view(archf, terms_en, fr_FR=terms_fr)
+
+ def test_sync(self):
+ """ Check translations after minor change in source terms. """
+ archf = '<form string="X">%s</form>'
+ terms_en = ('Bread and cheeze',)
+ terms_fr = ('Pain et fromage',)
+ terms_nl = ('Brood and kaas',)
+ view = self.create_view(archf, terms_en, fr_FR=terms_fr, nl_NL=terms_nl)
+
+ env_en = self.env(context={})
+ env_fr = self.env(context={'lang': 'fr_FR'})
+ env_nl = self.env(context={'lang': 'nl_NL'})
+
+ self.assertEqual(view.with_env(env_en).arch_db, archf % terms_en)
+ self.assertEqual(view.with_env(env_fr).arch_db, archf % terms_fr)
+ self.assertEqual(view.with_env(env_nl).arch_db, archf % terms_nl)
+
+ # modify source term in view (fixed type in 'cheeze')
+ terms_en = ('Bread and cheese',)
+ view.write({'arch_db': archf % terms_en})
+
+ # check whether translations have been synchronized
+ self.assertEqual(view.with_env(env_en).arch_db, archf % terms_en)
+ self.assertEqual(view.with_env(env_fr).arch_db, archf % terms_fr)
+ self.assertEqual(view.with_env(env_nl).arch_db, archf % terms_nl)