From cbee702ba4f3efa8fe794c8e2416e6584564ff0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 8 Jul 2020 10:50:47 +0000 Subject: [PATCH] [REF] website_event(_track): improve tests and test classes RATIONALE Even will soon gain a major update called Event Online, allowing to better support full-online events. In order to prepare its merge, preparatory merge are done to lessen the final diff., ... SPECIFICATIONS Improve website_event and website_event_track test coding style, notably * use specific users when performing tests to trigger access rights issues (this notably allowed to find an issue with event groups not allowed to update menus); * define common classes; LINKS PR #54801 Task ID 2304817 (Event Preparation 3) Prepares Task ID 2252655 (Main Online Event task) Prepares Task ID 2283796 (Event B2Basics) X-original-commit: 774211c7e4667c5350ac090510e72c106f2d10b6 --- addons/website_event/tests/__init__.py | 4 +- addons/website_event/tests/common.py | 17 +++++++ .../tests/test_event_internals.py | 28 +++++++++++ .../website_event/tests/test_event_website.py | 47 ------------------- .../website_event/tests/test_website_event.py | 13 +++++ addons/website_event_track/tests/__init__.py | 5 +- ...track_website.py => test_website_event.py} | 21 ++++++--- 7 files changed, 79 insertions(+), 56 deletions(-) create mode 100644 addons/website_event/tests/common.py create mode 100644 addons/website_event/tests/test_event_internals.py delete mode 100644 addons/website_event/tests/test_event_website.py create mode 100644 addons/website_event/tests/test_website_event.py rename addons/website_event_track/tests/{test_event_track_website.py => test_website_event.py} (62%) diff --git a/addons/website_event/tests/__init__.py b/addons/website_event/tests/__init__.py index 8db62f8ae97..6986da4eab7 100644 --- a/addons/website_event/tests/__init__.py +++ b/addons/website_event/tests/__init__.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import common +from . import test_event_internals from . import test_ui -from . import test_event_website +from . import test_website_event diff --git a/addons/website_event/tests/common.py b/addons/website_event/tests/common.py new file mode 100644 index 00000000000..b4bd532ab04 --- /dev/null +++ b/addons/website_event/tests/common.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.event.tests.common import TestEventCommon + + +class TestWebsiteEventCommon(TestEventCommon): + + def _get_menus(self): + return set(['Introduction', 'Location', 'Register']) + + def _assert_website_menus(self, event): + self.assertTrue(event.menu_id) + + menus = self.env['website.menu'].search([('parent_id', '=', event.menu_id.id)]) + self.assertEqual(len(menus), len(self._get_menus())) + self.assertEqual(set(menus.mapped('name')), self._get_menus()) diff --git a/addons/website_event/tests/test_event_internals.py b/addons/website_event/tests/test_event_internals.py new file mode 100644 index 00000000000..83ff4901df8 --- /dev/null +++ b/addons/website_event/tests/test_event_internals.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from datetime import datetime, timedelta + +from odoo import fields +from odoo.addons.website_event.tests.common import TestWebsiteEventCommon +from odoo.tests.common import users + + +class TestEventWebsite(TestWebsiteEventCommon): + + @users('user_eventmanager') + def test_menu_create(self): + event = self.env['event.event'].create({ + 'name': 'TestEvent', + 'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)), + 'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)), + 'website_menu': True, + }) + self._assert_website_menus(event) + + @users('user_eventmanager') + def test_menu_update(self): + event = self.env['event.event'].browse(self.event_0.id) + self.assertFalse(event.menu_id) + event.website_menu = True + self._assert_website_menus(event) diff --git a/addons/website_event/tests/test_event_website.py b/addons/website_event/tests/test_event_website.py deleted file mode 100644 index cc8098bd75f..00000000000 --- a/addons/website_event/tests/test_event_website.py +++ /dev/null @@ -1,47 +0,0 @@ -from datetime import datetime, timedelta - -from odoo import fields -from odoo.addons.event.tests.common import TestEventCommon -from odoo.addons.website.tests.test_base_url import TestUrlCommon -import odoo.tests - - -class TestEventWebsiteHelper(TestEventCommon): - def _get_menus(self): - return set(['Introduction', 'Location', 'Register']) - - def _assert_website_menus(self, event): - self.assertTrue(event.menu_id) - - menus = self.env['website.menu'].search([('parent_id', '=', event.menu_id.id)]) - self.assertEqual(len(menus), len(self._get_menus())) - self.assertEqual(set(menus.mapped('name')), self._get_menus()) - - -class TestEventWebsite(TestEventWebsiteHelper): - - def test_create_menu0(self): - event = self.env['event.event'].create({ - 'name': 'TestEvent', - 'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)), - 'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)), - 'registration_ids': [(0, 0, { - 'partner_id': self.user_eventuser.partner_id.id, - 'name': 'test_reg', - })], - 'website_menu': True, - }) - - self._assert_website_menus(event) - - def test_write_menu0(self): - self.assertFalse(self.event_0.menu_id) - self.event_0.website_menu = True - self._assert_website_menus(self.event_0) - - -@odoo.tests.tagged('-at_install', 'post_install') -class TestUrlCanonical(TestUrlCommon): - def test_01_canonical_url(self): - self._assertCanonical('/event?date=all', self.domain + '/event') - self._assertCanonical('/event?date=old', self.domain + '/event?date=old') diff --git a/addons/website_event/tests/test_website_event.py b/addons/website_event/tests/test_website_event.py new file mode 100644 index 00000000000..54e657d2c9f --- /dev/null +++ b/addons/website_event/tests/test_website_event.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.website.tests.test_base_url import TestUrlCommon +from odoo.tests import tagged + + +@tagged('-at_install', 'post_install') +class TestUrlCanonical(TestUrlCommon): + + def test_01_canonical_url(self): + self._assertCanonical('/event?date=all', self.domain + '/event') + self._assertCanonical('/event?date=old', self.domain + '/event?date=old') diff --git a/addons/website_event_track/tests/__init__.py b/addons/website_event_track/tests/__init__.py index a2186e6f137..3773e715842 100644 --- a/addons/website_event_track/tests/__init__.py +++ b/addons/website_event_track/tests/__init__.py @@ -1 +1,4 @@ -from . import test_event_track_website \ No newline at end of file +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import test_website_event diff --git a/addons/website_event_track/tests/test_event_track_website.py b/addons/website_event_track/tests/test_website_event.py similarity index 62% rename from addons/website_event_track/tests/test_event_track_website.py rename to addons/website_event_track/tests/test_website_event.py index 17f424bc538..cb7fd75460e 100644 --- a/addons/website_event_track/tests/test_event_track_website.py +++ b/addons/website_event_track/tests/test_website_event.py @@ -1,15 +1,20 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + from datetime import datetime, timedelta from odoo import fields -from odoo.addons.website_event.tests.test_event_website import TestEventWebsiteHelper +from odoo.addons.website_event.tests.common import TestWebsiteEventCommon +from odoo.tests.common import users -class TestEventWebsiteTrack(TestEventWebsiteHelper): +class TestEventWebsiteTrack(TestWebsiteEventCommon): def _get_menus(self): return super(TestEventWebsiteTrack, self)._get_menus() | set(['Talks', 'Agenda', 'Talk Proposals']) - def test_create_menu1(self): + @users('user_eventmanager') + def test_create_menu(self): event = self.env['event.event'].create({ 'name': 'TestEvent', 'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)), @@ -25,11 +30,13 @@ class TestEventWebsiteTrack(TestEventWebsiteHelper): self._assert_website_menus(event) - def test_write_menu1(self): - self.assertFalse(self.event_0.menu_id) - self.event_0.write({ + @users('user_eventmanager') + def test_write_menu(self): + event = self.env['event.event'].browse(self.event_0.id) + self.assertFalse(event.menu_id) + event.write({ 'website_menu': True, 'website_track': True, 'website_track_proposal': True, }) - self._assert_website_menus(self.event_0) + self._assert_website_menus(event)