summaryrefslogtreecommitdiff
path: root/addons/website/tests/test_menu.py
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-07-24 17:01:44 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-13 20:16:34 +0200
commit602807acdf20ff4f75a1abb7f5fa1be4db3f532d (patch)
tree94b96796b1ef42c41be2e320e6bce973787dc9ed /addons/website/tests/test_menu.py
parenta45bb90fac04e454e9792dfea82772227e963e17 (diff)
[FIX] website: improve/fix menu, copy on unlink, clone page, unique_path, sale_report, ...
Fix bug from the initial poc of JOV Fix menu creation - creating a menu would create a 'container' menu in the DB (.create is call without website_id) then writing on it would copy (if condition to cow) the menu with a website_id leaving the first one as a menu container unused. - website_menu should always have a website_id we dont want to support the multiwebsite system that allow to have generic/specific menu unlink/write is useless now since we always have a website_id Make unique_path website dependent, 2 distinct website can have a page with same name Make Sale report multiwebsite compliant Make website_id on sale_order / account.invoice as a related stored from partner_id. Co-authored-by: Derie Romain <rde@odoo.com> Co-authored-by: Kersten Jérémy <jke@odoo.com>
Diffstat (limited to 'addons/website/tests/test_menu.py')
-rw-r--r--addons/website/tests/test_menu.py121
1 files changed, 31 insertions, 90 deletions
diff --git a/addons/website/tests/test_menu.py b/addons/website/tests/test_menu.py
index e01b020bef8..8ceab5b6bf5 100644
--- a/addons/website/tests/test_menu.py
+++ b/addons/website/tests/test_menu.py
@@ -3,10 +3,19 @@ from odoo.tests import common
class TestMenu(common.TransactionCase):
- def setUp(self):
- super(TestMenu, self).setUp()
+
+ def test_website_own_menu_container(self):
+ Website = self.env['website']
Menu = self.env['website.menu']
+ total_menus = Menu.search_count([])
+ Website.create({'name': 'new website'})
+ self.assertEqual(total_menus + 2, Menu.search_count([]), "New website's bootstraping should have created a container menu and home menu")
+
+ def test_menu_got_duplicated(self):
+ Menu = self.env['website.menu']
+ total_menu_items = Menu.search_count([])
+
self.menu_root = Menu.create({
'name': 'Root',
})
@@ -16,95 +25,27 @@ class TestMenu(common.TransactionCase):
'parent_id': self.menu_root.id,
})
- self.menu_leaf1 = Menu.create({
- 'name': 'Leaf 1',
- 'parent_id': self.menu_child.id,
- })
-
- self.menu_leaf2 = Menu.create({
- 'name': 'Leaf 2',
- 'parent_id': self.menu_root.id,
- })
-
- # create an extra website so we have 3 in total
- self.website_test = self.env['website'].create({'domain': 'test'})
-
- def test_cow_leaf(self):
- Menu = self.env['website.menu']
-
- # backend write, no COW
- total_menu_items = Menu.search_count([])
- self.menu_leaf1.write({'name': 'Leaf 1 modified'})
- self.assertEqual(total_menu_items, Menu.search_count([]))
-
- # write through website 1
- self.menu_leaf1.with_context(website_id=1).write({'name': 'Leaf 1 Website 1'})
- self.assertEqual(self.menu_leaf1.name, 'Leaf 1 modified')
- self.assertEqual(total_menu_items + 1, Menu.search_count([]))
- new_menu = Menu.search([('name', '=', 'Leaf 1 Website 1')])
- self.assertEqual(new_menu.website_id.id, 1)
-
- def test_cow_root(self):
- Menu = self.env['website.menu']
-
- # backend write, no COW
- total_menu_items = Menu.search_count([])
- self.menu_root.write({'name': 'Root 1 modified'})
- self.assertEqual(total_menu_items, Menu.search_count([]))
-
- # write through website 1
- self.menu_root.with_context(website_id=1).write({'name': 'Root Website 1'})
- self.assertEqual(self.menu_root.name, 'Root 1 modified')
- self.assertEqual(total_menu_items + 4, Menu.search_count([]))
+ self.assertEqual(total_menu_items + 4, Menu.search_count([]), "Creating a menu without a website_id should create this menu for every website_id")
- # verify parent/child structure
- website_specific_leaf2 = Menu.search([('name', '=', 'Leaf 2'), ('website_id', '=', 1)])
- website_specific_leaf1 = Menu.search([('name', '=', 'Leaf 1'), ('website_id', '=', 1)])
- website_specific_child = Menu.search([('name', '=', 'Child'), ('website_id', '=', 1)])
- website_specific_root = Menu.search([('name', '=', 'Root Website 1'), ('website_id', '=', 1)])
- self.assertEqual(website_specific_leaf2.parent_id.id, website_specific_root.id)
- self.assertEqual(website_specific_leaf1.parent_id.id, website_specific_child.id)
- self.assertEqual(website_specific_child.parent_id.id, website_specific_root.id)
-
- def test_cou_leaf(self):
+ def test_menu_count(self):
Menu = self.env['website.menu']
-
- # backend unlink, no COU
- self.menu_leaf1.unlink()
- self.assertEqual(len(Menu.search([('name', '=', 'Leaf 1')])), 0)
-
total_menu_items = Menu.search_count([])
- self.menu_leaf2.with_context(website_id=1).unlink()
-
- website_specific_menus = Menu.search([('name', '=', 'Leaf 2')])
- self.assertEqual(len(website_specific_menus), 2)
- self.assertEqual(set(website_specific_menus.mapped('website_id').ids), set([2, self.website_test.id]))
-
- # exactly 2 website-specific menu items were created and one was deleted
- self.assertEqual(total_menu_items + 1, Menu.search_count([]))
-
- def test_cou_root_backend(self):
- Menu = self.env['website.menu']
- total_menu_items = Menu.search_count([])
- self.menu_root.unlink()
-
- # should have deleted root and all children
- self.assertEqual(total_menu_items - 4, Menu.search_count([]))
-
- def test_cou_root_frontend(self):
- Menu = self.env['website.menu']
- total_menu_items = Menu.search_count([])
- self.menu_root.with_context(website_id=1).unlink()
-
- # should have removed 4 generic menus and created root and all children for 2 remaining websites
- self.assertEqual(Menu.search_count([('name', '=', 'Root'), ('website_id', '=', 2)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Child'), ('website_id', '=', 2)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Leaf 1'), ('website_id', '=', 2)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Leaf 2'), ('website_id', '=', 2)]), 1)
-
- self.assertEqual(Menu.search_count([('name', '=', 'Root'), ('website_id', '=', self.website_test.id)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Child'), ('website_id', '=', self.website_test.id)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Leaf 1'), ('website_id', '=', self.website_test.id)]), 1)
- self.assertEqual(Menu.search_count([('name', '=', 'Leaf 2'), ('website_id', '=', self.website_test.id)]), 1)
- self.assertEqual(total_menu_items + 4, Menu.search_count([]))
+ top_menu = self.env['website'].get_current_website().menu_id
+ data = [
+ {
+ 'id': 'new-1',
+ 'parent_id': top_menu.id,
+ 'name': 'New Menu Specific 1',
+ 'url': '/new-specific-1',
+ },
+ {
+ 'id': 'new-2',
+ 'parent_id': top_menu.id,
+ 'name': 'New Menu Specific 2',
+ 'url': '/new-specific-2',
+ }
+ ]
+ Menu.save(1, {'data': data, 'to_delete': []})
+
+ self.assertEqual(total_menu_items + 2, Menu.search_count([]), "Creating 2 new menus should create only 2 menus records")