diff --git a/document_page_approval/security/document_page_security.xml b/document_page_approval/security/document_page_security.xml
index 03a170e4..10ac651a 100644
--- a/document_page_approval/security/document_page_security.xml
+++ b/document_page_approval/security/document_page_security.xml
@@ -33,4 +33,15 @@
+
+ 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 bcaf60cf..220e9e7a 100644
--- a/document_page_approval/tests/test_document_page_approval.py
+++ b/document_page_approval/tests/test_document_page_approval.py
@@ -1,4 +1,5 @@
from odoo.tests import common
+from odoo.exceptions import AccessError
class TestDocumentPageApproval(common.TransactionCase):
@@ -31,6 +32,23 @@ 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({
'name': 'This category requires approval',
@@ -134,6 +152,32 @@ 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()
+ with self.assertRaises(AccessError):
+ self.assertEqual(chreq.sudo(self.user2).state, 'draft')
+ self.assertEqual(chreq.state, 'draft')
+ self.assertEqual(chreq.sudo(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