[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
This commit is contained in:
Thibault Delavallée
2020-07-23 09:55:02 +00:00
parent 1db746419f
commit cbee702ba4
7 changed files with 79 additions and 56 deletions
+3 -1
View File
@@ -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
+17
View File
@@ -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())
@@ -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)
@@ -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')
@@ -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')
+4 -1
View File
@@ -1 +1,4 @@
from . import test_event_track_website
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import test_website_event
@@ -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)