diff options
| author | Harpritsinh Sisodiya <hsi@odoo.com> | 2020-08-11 13:56:21 +0000 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2020-10-06 16:09:30 +0000 |
| commit | 731b3eb2c5a45fcd7cb80625ddf9f30f4feb9848 (patch) | |
| tree | 37b3e797e14f4b7b40a2dbb2ad757054ba85c9e0 /addons/web_editor/tests/test_views.py | |
| parent | 03e0c53f40ef30589ebea36b954b6966fe45e3e5 (diff) | |
[FIX] web_editor: fix oe_structure view that are not in extention mode
Issue occurs due to the way we compute the default value in base ir ui view.
The method _compute_defaults don't set extention mode under some condition
even if we provide an inherit_id view.
This commit double fix it, we use now self.env['ir.ui.view'] to create the
new view and so always compute the mode based on 'if inherit id or not'.
Second fixes is to explicitely set mode manually as 'extention'.
before commit:
when you drop snippet to blog sidebar and click save button.
The changes of user is not visible in sidebar because view created in mode
'normal' and not 'extention'
task-2311520
closes odoo/odoo#55908
closes odoo/odoo#59313
X-original-commit: a944ce9beaaf984a7b1282785d03d4bfc8220f18
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Co-authored-by: jpr-odoo <jpr@openerp.com>
Diffstat (limited to 'addons/web_editor/tests/test_views.py')
| -rw-r--r-- | addons/web_editor/tests/test_views.py | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/addons/web_editor/tests/test_views.py b/addons/web_editor/tests/test_views.py index 31a6892dc29..322e2a78430 100644 --- a/addons/web_editor/tests/test_views.py +++ b/addons/web_editor/tests/test_views.py @@ -5,23 +5,60 @@ from odoo.tests import TransactionCase class TestViews(TransactionCase): - def test_infinite_inherit_loop(self): - # Creates an infinite loop: A t-call B and A inherit from B + + def setUp(self): + super().setUp() View = self.env['ir.ui.view'] - first_view = View.create({ + self.first_view = View.create({ 'name': 'Test View 1', 'type': 'qweb', 'arch': '<div>Hello World</div>', 'key': 'web_editor.test_first_view', }) - second_view = View.create({ + self.second_view = View.create({ 'name': 'Test View 2', 'type': 'qweb', - 'arch': '<t t-call="web_editor.test_first_view"/>', + 'arch': '<div><t t-call="web_editor.test_first_view"/></div>', 'key': 'web_editor.test_second_view', }) - second_view.write({ - 'inherit_id': first_view.id, + + def test_infinite_inherit_loop(self): + # Creates an infinite loop: A t-call B and A inherit from B + View = self.env['ir.ui.view'] + + self.second_view.write({ + 'inherit_id': self.first_view.id, }) # Test for RecursionError: maximum recursion depth exceeded in this function - View._views_get(first_view) + View._views_get(self.first_view) + + def test_oe_structure_as_inherited_view(self): + View = self.env['ir.ui.view'] + + base = View.create({ + 'name': 'Test View oe_structure', + 'type': 'qweb', + 'arch': """<xpath expr='//t[@t-call="web_editor.test_first_view"]' position='after'> + <div class="oe_structure" id='oe_structure_test_view_oe_structure'/> + </xpath>""", + 'key': 'web_editor.oe_structure_view', + 'inherit_id': self.second_view.id + }) + + # check view mode + self.assertEqual(base.mode, 'extension') + + # update content of the oe_structure + value = '''<div class="oe_structure" id="oe_structure_test_view_oe_structure" data-oe-id="%s" + data-oe-xpath="/div" data-oe-model="ir.ui.view" data-oe-field="arch"> + <p>Hello World!</p> + </div>''' % base.id + + base.save(value=value, xpath='/xpath/div') + + self.assertEqual(len(base.inherit_children_ids), 1) + self.assertEqual(base.inherit_children_ids.mode, 'extension') + self.assertIn( + '<p>Hello World!</p>', + base.inherit_children_ids.read_combined(['arch'])['arch'], + ) |
