Files
odoo_source/addons/website/tests/test_controllers.py
T
Chong Wang (cwg) f8c2b02abe [FIX] *: adapt code to jsonb translations
Website: the context install_filename='dummy' is used to prevent
arch_updated from becoming True while updating translations of
ir_ui_view.arch_db (if arch_update becomes True, test_inherit_specific
fails)

Fuzzy search for jsonb translated fields has been adapted in the case of
website.  It may require some refactoring later.
2022-09-15 22:37:50 +02:00

72 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
from werkzeug.urls import url_encode
from odoo import tests
from odoo.tools import mute_logger
@tests.tagged('post_install', '-at_install')
class TestControllers(tests.HttpCase):
@mute_logger('odoo.addons.http_routing.models.ir_http', 'odoo.http')
def test_last_created_pages_autocompletion(self):
self.authenticate("admin", "admin")
Page = self.env['website.page']
last_5_url_edited = []
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
suggested_links_url = base_url + '/website/get_suggested_links'
old_pages = Page
for i in range(0, 10):
new_page = Page.create({
'name': 'Generic',
'type': 'qweb',
'arch': '''
<div>content</div>
''',
'key': "test.generic_view-%d" % i,
'url': "/generic-%d" % i,
'is_published': True,
})
if i % 2 == 0:
old_pages += new_page
else:
last_5_url_edited.append(new_page.url)
self.opener.post(url=suggested_links_url, json={'params': {'needle': '/'}})
# mark as old
old_pages._write({'write_date': '2020-01-01'})
res = self.opener.post(url=suggested_links_url, json={'params': {'needle': '/'}})
resp = json.loads(res.content)
assert 'result' in resp
suggested_links = resp['result']
last_modified_history = next(o for o in suggested_links['others'] if o["title"] == "Last modified pages")
last_modified_values = map(lambda o: o['value'], last_modified_history['values'])
matching_pages = set(map(lambda o: o['value'], suggested_links['matching_pages']))
self.assertEqual(set(last_modified_values), set(last_5_url_edited) - matching_pages)
def test_02_client_action_iframe_url(self):
base_url = self.base_url()
urls = [
'/', # Homepage URL (special case)
'/contactus', # Regular website.page URL
'/website/info', # Controller (!!also testing multi slashes URL!!)
'/contactus?name=testing', # Query string URL
]
for url in urls:
resp = self.url_open(f'/@{url}')
self.assertEqual(resp.url, base_url + url, "Public user should have landed in the frontend")
self.authenticate("admin", "admin")
for url in urls:
resp = self.url_open(f'/@{url}')
backend_params = url_encode(dict(action='website.website_preview', path=url))
self.assertEqual(
resp.url, f'{base_url}/web#{backend_params}',
"Internal user should have landed in the backend")