mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-23 13:52:05 +02:00
85 lines
3.9 KiB
Python
85 lines
3.9 KiB
Python
from odoo import Command
|
|
from odoo.exceptions import AccessError
|
|
from odoo.tests.common import tagged
|
|
from odoo.addons.hr.tests.common import TestHrCommon
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestGamificationBadge(TestHrCommon):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestHrCommon, cls).setUpClass()
|
|
cls.demo_user, cls.demo2_user, cls.demo3_user, cls.demo4_manager = (cls.env["res.users"].with_context(no_reset_password=True)
|
|
.create([
|
|
{
|
|
"name": "demo_user",
|
|
"login": "demo@odoo.com",
|
|
"email": "demo@odoo.com",
|
|
"group_ids": [Command.link(cls.env.ref("base.group_user").id)],
|
|
}, {
|
|
"name": "demo2_user",
|
|
"login": "demo2@odoo.com",
|
|
"email": "demo2@odoo.com",
|
|
"group_ids": [Command.link(cls.env.ref("base.group_user").id)],
|
|
}, {
|
|
"name": "demo3_user",
|
|
"login": "demo3@odoo.com",
|
|
"email": "demo3@odoo.com",
|
|
"group_ids": [Command.link(cls.env.ref("base.group_user").id)],
|
|
}, {
|
|
"name": "demo4_manager",
|
|
"login": "demo4@odoo.com",
|
|
"email": "demo4@odoo.com",
|
|
"group_ids": [Command.link(cls.env.ref("hr.group_hr_user").id)],
|
|
},
|
|
]))
|
|
cls.demo_user.action_create_employee()
|
|
|
|
cls.env["gamification.badge.user.wizard"].with_user(cls.demo2_user).create([{
|
|
"badge_id": cls.env.ref("gamification.badge_good_job").id,
|
|
"comment": f"{cls.demo_user.name} is a good developer",
|
|
"user_id": cls.demo_user.id,
|
|
}]).action_grant_badge()
|
|
|
|
def test_update_badge(self):
|
|
"""
|
|
Test for who can update the bade.
|
|
case 1: The one who has given the badge should be able to update the badge
|
|
case 2: The one who has group Officer: Manage all employees access should be able to edit any badge
|
|
case 3: The one who has not given the badge(base user) should not be able to update the badge
|
|
"""
|
|
badge_user = self.env["gamification.badge.user"].search([], limit=1)[0]
|
|
user_comment = "This person is a good guy"
|
|
|
|
badge_user.with_user(self.demo2_user).write({'comment': user_comment})
|
|
self.assertEqual(user_comment, badge_user.comment)
|
|
|
|
badge_user.with_user(self.demo4_manager).write({'comment': user_comment + 'manager'})
|
|
self.assertEqual(user_comment + 'manager', badge_user.comment)
|
|
|
|
with self.assertRaises(AccessError):
|
|
badge_user.with_user(self.demo3_user).write({'comment': user_comment})
|
|
|
|
def test_delete_badge(self):
|
|
"""
|
|
Test for who can delete the bade.
|
|
case 1: The one who has not given the badge(base user) should not be able to delete the badge
|
|
case 2: The one who has given the badge should be able to delete the badge
|
|
case 3: The one who has group Officer: Manage all employees access should be able to edit any badge
|
|
"""
|
|
badge_user = self.env["gamification.badge.user"].search([], limit=1)[0]
|
|
with self.assertRaises(AccessError):
|
|
badge_user.with_user(self.demo3_user).unlink()
|
|
|
|
badge_user.with_user(self.demo2_user.id).unlink()
|
|
self.assertEqual(0, self.env['gamification.badge.user'].search_count([('id', '=', badge_user.id)], limit=1))
|
|
|
|
self.env["gamification.badge.user.wizard"].with_user(self.demo2_user).create([{
|
|
"badge_id": self.env.ref("gamification.badge_good_job").id,
|
|
"comment": f"{self.demo_user.name} is a good developer",
|
|
"user_id": self.demo_user.id,
|
|
}]).action_grant_badge()
|
|
|
|
badge_user = self.env["gamification.badge.user"].search([], limit=1)[0]
|
|
badge_user.with_user(self.demo4_manager.id).unlink()
|
|
self.assertEqual(0, self.env['gamification.badge.user'].search_count([('id', '=', badge_user.id)], limit=1))
|