summaryrefslogtreecommitdiff
path: root/addons/web_editor/tests
diff options
context:
space:
mode:
authorHarpritsinh Sisodiya <hsi@odoo.com>2020-08-11 13:56:21 +0000
committerJeremy Kersten <jke@odoo.com>2020-10-06 16:09:30 +0000
commit731b3eb2c5a45fcd7cb80625ddf9f30f4feb9848 (patch)
tree37b3e797e14f4b7b40a2dbb2ad757054ba85c9e0 /addons/web_editor/tests
parent03e0c53f40ef30589ebea36b954b6966fe45e3e5 (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')
-rw-r--r--addons/web_editor/tests/test_views.py53
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'],
+ )