91 lines
4.9 KiB
Python
91 lines
4.9 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
import odoo.tests
|
|
|
|
from requests import Session, PreparedRequest, Response
|
|
|
|
from datetime import datetime
|
|
from odoo.addons.base.tests.common import HttpCaseWithUserDemo
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
@odoo.tests.tagged('click_all', 'post_install', '-at_install', '-standard')
|
|
class TestMenusAdmin(odoo.tests.HttpCase):
|
|
allow_end_on_form = True
|
|
def test_01_click_everywhere_as_admin(self):
|
|
menus = self.env['ir.ui.menu'].load_menus(False)
|
|
for app_id in menus['root']['children']:
|
|
with self.subTest(app=menus[app_id]['name']):
|
|
_logger.runbot('Testing %s', menus[app_id]['name'])
|
|
self.browser_js("/odoo", "odoo.loader.modules.get('@web/webclient/clickbot/clickbot_loader').startClickEverywhere('%s');" % menus[app_id]['xmlid'], "odoo.isReady === true", login="admin", timeout=1200, success_signal="clickbot test succeeded")
|
|
|
|
|
|
@odoo.tests.tagged('click_all', 'post_install', '-at_install', '-standard')
|
|
class TestMenusDemo(HttpCaseWithUserDemo):
|
|
allow_end_on_form = True
|
|
def test_01_click_everywhere_as_demo(self):
|
|
user_demo = self.user_demo
|
|
menus = self.env['ir.ui.menu'].with_user(user_demo.id).load_menus(False)
|
|
for app_id in menus['root']['children']:
|
|
with self.subTest(app=menus[app_id]['name']):
|
|
_logger.runbot('Testing %s', menus[app_id]['name'])
|
|
self.browser_js("/odoo", "odoo.loader.modules.get('@web/webclient/clickbot/clickbot_loader').startClickEverywhere('%s');" % menus[app_id]['xmlid'], "odoo.isReady === true", login="demo", timeout=1200, success_signal="clickbot test succeeded")
|
|
|
|
@odoo.tests.tagged('post_install', '-at_install')
|
|
class TestMenusAdminLight(odoo.tests.HttpCase):
|
|
allow_end_on_form = True
|
|
|
|
@classmethod
|
|
def _request_handler(cls, s: Session, r: PreparedRequest, /, **kw):
|
|
# mock odoofin requests
|
|
if 'proxy/v1/get_dashboard_institutions' in r.url:
|
|
r = Response()
|
|
r.status_code = 200
|
|
r.json = lambda: {'result': {}}
|
|
return r
|
|
return super()._request_handler(s, r, **kw)
|
|
|
|
def test_01_click_apps_menus_as_admin(self):
|
|
# Disable onboarding tours to remove warnings
|
|
if 'tour_enabled' in self.env['res.users']._fields:
|
|
self.env.ref('base.user_admin').tour_enabled = False
|
|
# Due to action_pos_preparation_display_kitchen_display, cliking on the "Kitchen Display"
|
|
# menuitem could open the UI display, which will break the crawler tests as there is no
|
|
# way for the tour to be executed, leading to a timeout
|
|
if 'pos_preparation_display.display' in self.env:
|
|
self.env['pos_preparation_display.display'].create({
|
|
'name': 'Super Smart Kitchen Display',
|
|
})
|
|
# There is a bug when we go the Field Service app (without any demo data) and we
|
|
# click on the Studio button. It seems the fake group generated containing one record
|
|
# to be used in the KanbanEditorRenderer has groupByField to undefined
|
|
# (I guess it is because there is no group by?) and we got an error at this line
|
|
# because we assume groupByField is defined.
|
|
if 'project.task' in self.env and 'is_fsm' in self.env['project.task']:
|
|
self.env['project.task'].create({
|
|
'name': 'Zizizbroken',
|
|
'project_id': self.env.ref('industry_fsm.fsm_project').id,
|
|
'user_ids': [(4, self.env.ref('base.user_admin').id)],
|
|
'date_deadline': datetime.now() + relativedelta(hour=12),
|
|
'planned_date_begin': datetime.now() + relativedelta(hour=10),
|
|
})
|
|
self.browser_js("/odoo", "odoo.loader.modules.get('@web/webclient/clickbot/clickbot_loader').startClickEverywhere(undefined, true);", "odoo.isReady === true", login="admin", timeout=120, success_signal="clickbot test succeeded")
|
|
|
|
@odoo.tests.tagged('post_install', '-at_install')
|
|
class TestMenusDemoLight(HttpCaseWithUserDemo):
|
|
allow_end_on_form = True
|
|
|
|
def test_01_click_apps_menus_as_demo(self):
|
|
# Disable onboarding tours to remove warnings
|
|
if 'tour_enabled' in self.env['res.users']._fields:
|
|
self.user_demo.tour_enabled = False
|
|
# If not enabled (like in demo data), landing on website dashboard will redirect to /
|
|
# and make the test crash
|
|
group_website_designer = self.env.ref('website.group_website_designer', raise_if_not_found=False)
|
|
if group_website_designer:
|
|
self.env.ref('base.group_user').write({"implied_ids": [(4, group_website_designer.id)]})
|
|
self.browser_js("/odoo", "odoo.loader.modules.get('@web/webclient/clickbot/clickbot_loader').startClickEverywhere(undefined, true);", "odoo.isReady === true", login="demo", timeout=120, success_signal="clickbot test succeeded")
|