diff --git a/document_page_approval/security/document_page_security.xml b/document_page_approval/security/document_page_security.xml index f0c34538..e72c14ce 100644 --- a/document_page_approval/security/document_page_security.xml +++ b/document_page_approval/security/document_page_security.xml @@ -33,4 +33,17 @@ + + Change Request Manager + + + [(1, '=', 1)] + + + + + diff --git a/document_page_approval/tests/test_document_page_approval.py b/document_page_approval/tests/test_document_page_approval.py index 81b1843e..5cdba07c 100644 --- a/document_page_approval/tests/test_document_page_approval.py +++ b/document_page_approval/tests/test_document_page_approval.py @@ -1,3 +1,4 @@ +from odoo.exceptions import AccessError from odoo.tests import common @@ -25,6 +26,16 @@ class TestDocumentPageApproval(common.TransactionCase): ], } ) + self.manager_gid = self.env.ref("document_page.group_document_manager") + self.user_manager = self.env["res.users"].create( + { + "name": "Test document manager", + "login": "Test document manager", + "groups_id": [ + (6, 0, [self.env.ref("base.group_user").id, self.manager_gid.id]) + ], + } + ) # demo_approval self.category2 = self.page_obj.create( { @@ -136,6 +147,35 @@ class TestDocumentPageApproval(common.TransactionCase): self.assertEqual(page.approved_date, chreq.approved_date) self.assertEqual(page.approved_uid, chreq.approved_uid) + def test_check_rules(self): + page = self.page2 + # aprove everything + self.history_obj.search( + [("page_id", "=", page.id), ("state", "!=", "approved")] + ).action_approve() + # new change request from scrath + chreq = self.history_obj.create( + { + "page_id": page.id, + "summary": "Changed something", + "content": "New content", + } + ) + self.assertEqual(chreq.state, "draft") + chreq.action_to_approve() + self.assertEqual(chreq.state, "to approve") + chreq.action_cancel() + self.assertEqual(chreq.state, "cancelled") + chreq.sudo().action_draft() + chreq.invalidate_cache() + with self.assertRaises(AccessError): + self.assertEqual(chreq.with_user(self.user2).state, "draft") + self.assertEqual(chreq.state, "draft") + chreq.invalidate_cache() + self.assertEqual(chreq.with_user(self.user_manager).state, "draft") + chreq.action_approve() + self.assertEqual(chreq.state, "approved") + def test_get_approvers_guids(self): """Get approver guids.""" page = self.page2