mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 17:12:00 +02:00
226 lines
8.4 KiB
Python
226 lines
8.4 KiB
Python
# Copyright 2023 CreuBlanca
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from freezegun import freeze_time
|
|
|
|
from odoo.tests.common import Form, TransactionCase
|
|
|
|
|
|
class TestEvaluation(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.result_failed = cls.env["mgmtsystem.evaluation.result"].create(
|
|
{"name": "Failed", "passed": False}
|
|
)
|
|
cls.result_passed = cls.env["mgmtsystem.evaluation.result"].create(
|
|
{
|
|
"name": "Passed",
|
|
"passed": True,
|
|
}
|
|
)
|
|
cls.template = cls.env["mgmtsystem.evaluation.template"].create(
|
|
{
|
|
"model_id": cls.env.ref("base.model_res_partner").id,
|
|
"name": "Template",
|
|
"feedback": "Feedback",
|
|
"note": "Note",
|
|
"result_ids": [(6, 0, (cls.result_failed | cls.result_passed).ids)],
|
|
}
|
|
)
|
|
cls.partner = cls.env["res.partner"].create({"name": "Demo partner"})
|
|
cls.partner_manager = cls.env["res.partner"].create(
|
|
{"name": "Demo manager partner"}
|
|
)
|
|
cls.partner_manager_2 = cls.env["res.partner"].create(
|
|
{"name": "Demo manager 2 partner"}
|
|
)
|
|
cls.user = cls.env["res.users"].create(
|
|
{
|
|
"partner_id": cls.partner.id,
|
|
"login": "test_user_login",
|
|
"password": "test_user_login",
|
|
}
|
|
)
|
|
cls.manager = cls.env["res.users"].create(
|
|
{
|
|
"partner_id": cls.partner_manager.id,
|
|
"login": "test_nanager_login",
|
|
"password": "test_nanager_login",
|
|
}
|
|
)
|
|
cls.manager_2 = cls.env["res.users"].create(
|
|
{
|
|
"partner_id": cls.partner_manager_2.id,
|
|
"login": "test_nanager_login_2",
|
|
"password": "test_nanager_login_2",
|
|
}
|
|
)
|
|
cls.group = cls.env["res.groups"].create(
|
|
{
|
|
"name": "Group",
|
|
}
|
|
)
|
|
cls.activity_1 = cls.env["mail.activity.type"].create({"name": "Activity 1"})
|
|
cls.activity_2 = cls.env["mail.activity.type"].create({"name": "Activity 2"})
|
|
|
|
def test_onchange(self):
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
self.assertFalse(f.feedback)
|
|
f.template_id = self.template
|
|
self.assertEqual(f.feedback, self.template.feedback)
|
|
f.resource = self.partner
|
|
|
|
def test_user(self):
|
|
self.assertEqual(0, self.partner.mgmtsystem_evaluation_count)
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.manager_ids = self.manager
|
|
self.assertFalse(evaluation.user_id)
|
|
self.assertFalse(
|
|
self.env["mgmtsystem.evaluation"]
|
|
.with_user(self.user.id)
|
|
.search([("id", "=", evaluation.id)])
|
|
)
|
|
evaluation.draft2progress()
|
|
self.assertEqual(evaluation.user_id, self.user)
|
|
self.assertEqual(
|
|
evaluation,
|
|
self.env["mgmtsystem.evaluation"]
|
|
.with_user(self.user.id)
|
|
.search([("id", "=", evaluation.id)]),
|
|
)
|
|
self.assertTrue(evaluation.with_user(self.manager).is_manager)
|
|
self.assertFalse(evaluation.with_user(self.manager).is_user)
|
|
self.assertFalse(
|
|
self.env["mgmtsystem.evaluation"]
|
|
.with_user(self.manager_2.id)
|
|
.search([("id", "=", evaluation.id)]),
|
|
)
|
|
self.assertFalse(evaluation.with_user(self.user).is_manager)
|
|
self.assertTrue(evaluation.with_user(self.user).is_user)
|
|
self.assertEqual(1, self.partner.mgmtsystem_evaluation_count)
|
|
|
|
def test_manager(self):
|
|
self.assertEqual(0, self.partner.mgmtsystem_evaluation_count)
|
|
self.group.users = self.manager_2
|
|
self.template.group_id = self.group
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.manager_ids = self.manager
|
|
self.assertFalse(evaluation.user_id)
|
|
self.assertFalse(
|
|
self.env["mgmtsystem.evaluation"]
|
|
.with_user(self.user.id)
|
|
.search([("id", "=", evaluation.id)])
|
|
)
|
|
evaluation.draft2progress()
|
|
self.assertEqual(evaluation.user_id, self.user)
|
|
self.assertEqual(
|
|
evaluation,
|
|
self.env["mgmtsystem.evaluation"]
|
|
.with_user(self.user.id)
|
|
.search([("id", "=", evaluation.id)]),
|
|
)
|
|
self.assertTrue(evaluation.with_user(self.manager).is_manager)
|
|
self.assertFalse(evaluation.with_user(self.manager).is_user)
|
|
self.assertTrue(evaluation.with_user(self.manager_2).is_manager)
|
|
self.assertFalse(evaluation.with_user(self.manager_2).is_user)
|
|
self.assertFalse(evaluation.with_user(self.user).is_manager)
|
|
self.assertTrue(evaluation.with_user(self.user).is_user)
|
|
self.assertEqual(1, self.partner.mgmtsystem_evaluation_count)
|
|
|
|
def test_no_repetition(self):
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.draft2progress()
|
|
evaluation.result_id = self.result_failed
|
|
evaluation.progress2done()
|
|
self.assertFalse(evaluation.next_evaluation_date)
|
|
|
|
def test_repetition(self):
|
|
self.template.write(
|
|
{
|
|
"recurrence_type": "monthly",
|
|
"recurrence_period": 1,
|
|
}
|
|
)
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.draft2progress()
|
|
evaluation.result_id = self.result_failed
|
|
evaluation.progress2done()
|
|
self.assertTrue(evaluation.next_evaluation_date)
|
|
self.env["mgmtsystem.evaluation"]._cron_new_evaluation()
|
|
self.assertFalse(
|
|
self.env["mgmtsystem.evaluation"].search(
|
|
[
|
|
("template_id", "=", self.template.id),
|
|
("id", "not in", evaluation.ids),
|
|
]
|
|
)
|
|
)
|
|
with freeze_time(evaluation.next_evaluation_date):
|
|
self.env["mgmtsystem.evaluation"]._cron_new_evaluation()
|
|
self.assertTrue(
|
|
self.env["mgmtsystem.evaluation"].search(
|
|
[
|
|
("template_id", "=", self.template.id),
|
|
("id", "not in", evaluation.ids),
|
|
]
|
|
)
|
|
)
|
|
|
|
def test_cancel_back_to_draft(self):
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.draft2progress()
|
|
self.assertEqual("progress", evaluation.state)
|
|
evaluation.cancel()
|
|
self.assertEqual("cancel", evaluation.state)
|
|
evaluation.back_to_draft()
|
|
self.assertEqual("draft", evaluation.state)
|
|
|
|
def test_activities(self):
|
|
self.template.write(
|
|
{
|
|
"user_activity_type_id": self.activity_1.id,
|
|
"manager_activity_type_id": self.activity_2.id,
|
|
}
|
|
)
|
|
with Form(self.env["mgmtsystem.evaluation"]) as f:
|
|
f.template_id = self.template
|
|
f.resource = self.partner
|
|
evaluation = f.save()
|
|
evaluation.manager_ids = self.manager | self.manager_2
|
|
self.assertFalse(evaluation.activity_ids)
|
|
evaluation.draft2progress()
|
|
self.assertEqual(3, len(evaluation.activity_ids))
|
|
self.assertTrue(
|
|
evaluation.activity_ids.filtered(
|
|
lambda r: r.user_id == self.user
|
|
and r.activity_type_id == self.activity_1
|
|
)
|
|
)
|
|
self.assertTrue(
|
|
evaluation.activity_ids.filtered(
|
|
lambda r: r.user_id == self.manager
|
|
and r.activity_type_id == self.activity_2
|
|
)
|
|
)
|
|
self.assertTrue(
|
|
evaluation.activity_ids.filtered(
|
|
lambda r: r.user_id == self.manager_2
|
|
and r.activity_type_id == self.activity_2
|
|
)
|
|
)
|