mirror of
https://github.com/odoo/design-themes.git
synced 2025-10-07 01:18:52 +07:00
23c7f7c1da
Commit [1] copies configurator pages during the flow. When the
standalone test leaves website_id in the context, that copy now tries
to create generic views with a website-scoped environment and hits the
ir.ui.view guard. Running the configurator inside MockRequest mimics the
real HTTP context (request-driven website, no forced id on the ORM), so
the copy succeeds and the test passes again.
[1]: https://github.com/odoo/odoo/commit/4231c9e545fdebdad034a4418f2a11e6691bac61
runbot-232963
closes odoo/design-themes#1160
X-original-commit: 501f57e840
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
80 lines
3.6 KiB
Python
80 lines
3.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from unittest.mock import patch
|
|
|
|
from odoo.addons.http_routing.tests.common import MockRequest
|
|
from odoo.tests import standalone
|
|
|
|
|
|
@standalone('website_standalone')
|
|
def test_01_theme_install_generate_primary_templates(env):
|
|
""" This test ensures the theme `_generate_primary_snippet_templates()`
|
|
method is correctly called before xml views are generated.
|
|
"""
|
|
# 1. Setup
|
|
theme_buzzy = env.ref('base.module_theme_clean')
|
|
|
|
if theme_buzzy.state == 'installed':
|
|
theme_buzzy.button_immediate_uninstall()
|
|
# Ensure those views are deleted to mimic the initial state of theme not installed.
|
|
# Because "theme_buzzy" was installed before through "test_themes" dependencies, removing
|
|
# those views is needed to replicate the bug: if the configurator views are not generated,
|
|
# the theme install will fail because some of the imported views inherit them.
|
|
env['ir.ui.view'].with_context(_force_unlink=True).search([('key', '=', 'website.configurator_s_banner')]).unlink()
|
|
env['ir.ui.view'].with_context(_force_unlink=True).search([('key', '=', 'website.configurator_s_cover')]).unlink()
|
|
theme_buzzy.button_immediate_install()
|
|
|
|
|
|
@standalone('website_standalone')
|
|
def test_02_theme_default_generate_primary_templates(env):
|
|
|
|
def fake_website_api(self, path, payload):
|
|
# Only the configurator custom_resources endpoint is used here
|
|
assert path.startswith("/api/website/2/configurator/custom_resources")
|
|
return {'images': {}}
|
|
|
|
def fake_olg_api(self, path, payload):
|
|
# Placeholder generator used by configurator
|
|
assert path == "/api/olg/1/generate_placeholder"
|
|
placeholders = payload.get("placeholders", [])
|
|
mapping = {key: key for key in placeholders}
|
|
return mapping
|
|
|
|
# Verify that theme default's configurator templates are created
|
|
# on website update.
|
|
theme_default = env.ref('base.module_theme_default')
|
|
website_module = env.ref('base.module_website')
|
|
|
|
if theme_default.state == 'installed':
|
|
theme_default.button_immediate_uninstall()
|
|
env['ir.ui.view'].with_context(_force_unlink=True).search([('key', 'like', 'website.configurator_')]).unlink()
|
|
|
|
with patch("odoo.addons.website.models.website.Website._website_api_rpc", autospec=True, side_effect=fake_website_api), \
|
|
patch("odoo.addons.website.models.website.Website._OLG_api_rpc", autospec=True, side_effect=fake_olg_api):
|
|
|
|
if website_module.state == 'installed':
|
|
website_module.button_immediate_upgrade()
|
|
else:
|
|
website_module.button_immediate_install()
|
|
|
|
template_keys = env['ir.ui.view'].search([('key', 'like', 'website.configurator')]).mapped('key')
|
|
manifest = env['ir.module.module'].get_module_info('theme_default')
|
|
snippets_per_page = manifest.get('configurator_snippets')
|
|
for page in snippets_per_page:
|
|
for snippet in snippets_per_page[page]:
|
|
template_key = f'website.configurator_{page}_{snippet}'
|
|
assert template_key in template_keys, f"{template_key} should exist"
|
|
|
|
website = env['website'].search([], limit=1)
|
|
website.ensure_one()
|
|
with MockRequest(env, website=website):
|
|
website.configurator_apply(
|
|
selected_features=[1, 2, 3, 4],
|
|
industry_id=2836,
|
|
industry_name='private university',
|
|
selected_palette='default-15',
|
|
theme_name='theme_bewise',
|
|
website_purpose='get_leads',
|
|
website_type='business',
|
|
)
|