58 lines
2.6 KiB
Python
58 lines
2.6 KiB
Python
from odoo.tests import tagged
|
|
from odoo import Command
|
|
|
|
from .test_approvals import TestStudioApprovalsCommon
|
|
|
|
|
|
@tagged('mail_activity_mixin', "-at_install", "post_install")
|
|
class TestApprovalsActivity(TestStudioApprovalsCommon):
|
|
def test_approve_via_activity(self):
|
|
IrModel = self.env["ir.model"]
|
|
|
|
self.env["studio.approval.rule"].create([
|
|
{
|
|
"name": "Rule 1",
|
|
"model_id": IrModel._get("test.studio.model_action").id,
|
|
"method": "action_confirm",
|
|
"approval_group_id": self.env.ref("base.group_user").id,
|
|
"approver_ids": [Command.link(self.admin_user.id)],
|
|
"users_to_notify": [Command.link(2)],
|
|
"exclusive_user": True,
|
|
},
|
|
{
|
|
"name": "Rule 2",
|
|
"model_id": IrModel._get("test.studio.model_action").id,
|
|
"method": "action_confirm",
|
|
"approval_group_id": self.env.ref("base.group_user").id,
|
|
"approver_ids": [Command.link(self.admin_user.id)],
|
|
"users_to_notify": [Command.link(2)],
|
|
"exclusive_user": True,
|
|
}
|
|
])
|
|
|
|
model_action = self.env["test.studio.model_action"].create({
|
|
"name": "test"
|
|
})
|
|
|
|
with self.with_user("demo"):
|
|
self.env["test.studio.model_action"].browse(model_action.id).action_confirm()
|
|
|
|
self.assertFalse(model_action.confirmed)
|
|
self.assertEqual(model_action.activity_ids.summary, "Grant Approval")
|
|
spec = self.env["studio.approval.rule"].get_approval_spec([dict(model="test.studio.model_action", method="action_confirm", action_id=False, res_id=model_action.id)])
|
|
spec = dict(spec["test.studio.model_action"])[model_action.id, "action_confirm", False]
|
|
self.assertEqual(len(spec["entries"]), 1)
|
|
self.assertEqual(len(spec["rules"]), 2)
|
|
self.assertTrue(spec["entries"][0]["approved"])
|
|
|
|
model_action.activity_ids.action_feedback("Losing my religion")
|
|
spec = self.env["studio.approval.rule"].get_approval_spec([dict(model="test.studio.model_action", method="action_confirm", action_id=False, res_id=model_action.id)])
|
|
spec = dict(spec["test.studio.model_action"])[model_action.id, "action_confirm", False]
|
|
self.assertEqual(len(spec["entries"]), 2)
|
|
self.assertEqual(len(spec["rules"]), 2)
|
|
self.assertTrue(all(e["approved"] for e in spec["entries"]))
|
|
self.assertFalse(model_action.activity_ids)
|
|
|
|
message_feedback = [m for m in model_action.message_ids if "Losing my religion" in m.body]
|
|
self.assertEqual(len(message_feedback), 1)
|