server-ux/base_technical_features/tests/test_base_technical_features.py

66 lines
2.7 KiB
Python
Raw Normal View History

2021-03-23 19:15:27 +00:00
from lxml import etree
from flectra import api
from flectra.exceptions import AccessError
from flectra.tests import common
class TestBaseTechnicalFeatures(common.TransactionCase):
def test_01_visible_menus(self):
""" A technical feature is visible to the user with the technical \
features group """
menu_obj = self.env["ir.ui.menu"].with_context({"ir.ui.menu.full_list": True})
menu_id = menu_obj.search(
[("groups_id", "=", self.env.ref("base.group_no_one").id)], limit=1
).id
self.env.user.write({"technical_features": False})
self.env.user._compute_show_technical_features()
self.assertNotIn(menu_id, menu_obj._visible_menu_ids())
self.env.user.write({"technical_features": True})
self.env.user._compute_show_technical_features()
self.assertIn(menu_id, menu_obj._visible_menu_ids())
def test02_visible_fields(self):
""" A technical field is visible when its form is loaded by a user \
with the technical features group """
def get_partner_field_invisible():
xml = etree.fromstring(
self.env["res.users"]
.fields_view_get(view_id=self.env.ref("base.view_users_form").id)[
"arch"
]
.encode("utf-8")
)
return xml.xpath('//div/group/field[@name="partner_id"]')[0].get(
"invisible"
)
self.env.user.write({"technical_features": False})
self.assertEqual(get_partner_field_invisible(), "1")
self.env.user.write({"technical_features": True})
self.assertEqual(get_partner_field_invisible(), None)
def test03_user_access(self):
""" Setting the user pref raises an access error if the user is not \
in group_no_one """
user = self.env["res.users"].create(
{
"name": "Test user technical features",
"login": "testusertechnicalfeatures",
"groups_id": [(6, 0, [])],
}
)
self.env.user._compute_show_technical_features()
self.env.user._compute_technical_features()
with api.Environment.manage():
env = api.Environment(self.env.cr, user.id, self.env.context)
with self.assertRaises(AccessError):
env["res.users"].browse(user.id).write({"technical_features": True})
with self.assertRaises(AccessError):
user.write({"technical_features": True})
user.write({"groups_id": [(4, self.env.ref("base.group_no_one").id)]})
with api.Environment.manage():
env = api.Environment(self.env.cr, user.id, self.env.context)
env["res.users"].browse(user.id).write({"technical_features": True})