summaryrefslogtreecommitdiff
path: root/addons/web_editor/tests/test_views.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web_editor/tests/test_views.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web_editor/tests/test_views.py')
-rw-r--r--addons/web_editor/tests/test_views.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/addons/web_editor/tests/test_views.py b/addons/web_editor/tests/test_views.py
new file mode 100644
index 00000000..322e2a78
--- /dev/null
+++ b/addons/web_editor/tests/test_views.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests import TransactionCase
+
+
+class TestViews(TransactionCase):
+
+ def setUp(self):
+ super().setUp()
+ View = self.env['ir.ui.view']
+ self.first_view = View.create({
+ 'name': 'Test View 1',
+ 'type': 'qweb',
+ 'arch': '<div>Hello World</div>',
+ 'key': 'web_editor.test_first_view',
+ })
+ self.second_view = View.create({
+ 'name': 'Test View 2',
+ 'type': 'qweb',
+ 'arch': '<div><t t-call="web_editor.test_first_view"/></div>',
+ 'key': 'web_editor.test_second_view',
+ })
+
+ 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(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'],
+ )