mirror of
https://gitlab.com/flectra-community/server-ux.git
synced 2024-11-22 14:12:07 +00:00
59 lines
2.4 KiB
Python
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})
|