From 087140a84af29f35a8a884aec81577ce737bc6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 31 Mar 2021 11:15:55 +0200 Subject: [PATCH] [FIX] document_page_approval: Add rule to manager group users from history pages --- .../security/document_page_security.xml | 11 +++++ .../tests/test_document_page_approval.py | 44 +++++++++++++++++++ 2 files changed, 55 insertions(+) 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