server-ux/base_technical_features/tests/test_base_technical_features.py
2024-05-03 11:21:24 +02:00

59 lines
2.4 KiB
Python

from lxml import etree
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():
xml = etree.fromstring(
self.env["res.users"]
.get_view(view_id=self.env.ref("base.view_users_form").id)["arch"]
.encode("utf-8")
)
return xml.xpath('//div/group/field[@name="partner_id"]')
self.env.user.write({"technical_features": False})
self.assertEqual(len(get_partner_field()), 0)
self.env.user.write({"technical_features": True})
self.assertEqual(len(get_partner_field()), 1)
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 self.assertRaises(AccessError):
self.env["res.users"].browse(user.id).sudo().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)]})
self.env["res.users"].browse(user.id).sudo().write({"technical_features": True})