Files
odoo_source/addons/web_planner/tests/test_web_planner.py
T
Andreas Perhab 9916c30da8 [FIX] web_planner: test should not assume url parameter order
test_web_planner throws errors like this on some environments:
AssertionError:
'/web#action=135&view_type=list' != '/web#view_type=list&action=135'

the urls in web_planner are created with a dict for the parameters to
create the urls. dicts are unorderd up to python 3.5. (see
 https://www.python.org/dev/peps/pep-0468/)

As the urls /web#action=135&view_type=list and
/web#view_type=list&action=135 are equivalent we now test if the
parameters are the equal in the url regardless of their order.

closes odoo/odoo#30138
2019-01-11 14:05:04 +00:00

102 lines
3.3 KiB
Python

# -*- coding: utf-8 -*-
from odoo.tests.common import TransactionCase
from odoo.addons.web_planner.models.web_planner import Planner
from werkzeug import urls
class TestWebPlanner(TransactionCase):
def test_00(self):
#default view
action = self.env["ir.actions.act_window"].create(
{
"name": "test_web_planner_00",
"res_model": "res.partner",
"view_mode": "tree",
}
)
self.env["ir.model.data"].create(
{
"name": "test_00",
"module": "web_planner",
"model": "ir.actions.act_window",
"res_id": action.id,
}
)
backend_url = Planner.prepare_backend_url(self, "web_planner.test_00")
parameters = urls.url_decode(urls.url_parse(backend_url).fragment).to_dict(flat=False)
self.assertEqual(parameters, {'view_type': ['list'], 'action': [str(action.id)]})
def test_01(self):
#bad choise of view_type
action = self.env["ir.actions.act_window"].create(
{
"name": "test_web_planner_01",
"res_model": "res.partner",
"view_mode": "tree",
}
)
self.env["ir.model.data"].create(
{
"name": "test_01",
"module": "web_planner",
"model": "ir.actions.act_window",
"res_id": action.id,
}
)
backend_url = Planner.prepare_backend_url(self, "web_planner.test_01", 'form')
parameters = urls.url_decode(urls.url_parse(backend_url).fragment).to_dict(flat=False)
self.assertEqual(parameters, {'view_type': ['list'], 'action': [str(action.id)]})
def test_02(self):
#choose the second view_mode
action = self.env["ir.actions.act_window"].create(
{
"name": "test_web_planner_02",
"res_model": "res.partner",
"view_mode": "tree,form",
}
)
self.env["ir.model.data"].create(
{
"name": "test_02",
"module": "web_planner",
"model": "ir.actions.act_window",
"res_id": action.id,
}
)
backend_url = Planner.prepare_backend_url(self, "web_planner.test_02", 'form')
parameters = urls.url_decode(urls.url_parse(backend_url).fragment).to_dict(flat=False)
self.assertEqual(parameters, {'view_type': ['form'], 'action': [str(action.id)]})
def test_03(self):
#bad xml_id
action = self.env["ir.actions.act_window"].create(
{
"name": "test_web_planner_03",
"res_model": "res.partner",
"view_mode": "tree,form",
}
)
self.env["ir.model.data"].create(
{
"name": "test_03",
"module": "web_planner",
"model": "ir.actions.act_window",
"res_id": action.id,
}
)
backend_url = Planner.prepare_backend_url(self, "web_planner.bad_xml_id", 'form')
parameters = urls.url_decode(urls.url_parse(backend_url).fragment).to_dict(flat=False)
self.assertEqual(parameters, {'view_type': ['list'], 'model': ['ir.module.module']})