mirror of
https://github.com/OCA/knowledge.git
synced 2025-07-16 04:02:56 -06:00
134 lines
4.8 KiB
Python
134 lines
4.8 KiB
Python
from odoo.tests import common
|
|
|
|
|
|
class TestDocumentPageApproval(common.TransactionCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.page_obj = self.env["document.page"]
|
|
self.history_obj = self.env["document.page.history"]
|
|
# demo
|
|
self.category1 = self.env.ref("document_page.demo_category1")
|
|
self.page1 = self.env.ref("document_page.demo_page1")
|
|
self.approver_gid = self.env.ref(
|
|
"document_page_approval.group_document_approver_user"
|
|
)
|
|
self.env.ref("base.user_root").write({"groups_id": [(4, self.approver_gid.id)]})
|
|
# demo_approval
|
|
self.category2 = self.page_obj.create(
|
|
{
|
|
"name": "This category requires approval",
|
|
"type": "category",
|
|
"approval_required": True,
|
|
"approver_gid": self.approver_gid.id,
|
|
}
|
|
)
|
|
self.page2 = self.page_obj.create(
|
|
{
|
|
"name": "This page requires approval",
|
|
"parent_id": self.category2.id,
|
|
"content": "This content will require approval",
|
|
}
|
|
)
|
|
|
|
def test_approval_required(self):
|
|
page = self.page2
|
|
self.assertTrue(page.is_approval_required)
|
|
self.assertTrue(page.has_changes_pending_approval)
|
|
self.assertEqual(len(page.history_ids), 0)
|
|
|
|
def test_change_request_approve(self):
|
|
page = self.page2
|
|
chreq = self.history_obj.search(
|
|
[("page_id", "=", page.id), ("state", "!=", "approved")]
|
|
)[0]
|
|
|
|
# It should automatically be in 'to approve' state
|
|
self.assertEqual(chreq.state, "to approve")
|
|
|
|
# Needed to compute calculated fields
|
|
page.refresh()
|
|
self.assertNotEqual(chreq.content, page.content)
|
|
|
|
# who_am_i
|
|
self.assertTrue(chreq.am_i_owner)
|
|
self.assertTrue(chreq.am_i_approver)
|
|
|
|
# approve
|
|
chreq.action_approve()
|
|
self.assertEqual(chreq.state, "approved")
|
|
self.assertEqual(chreq.content, page.content)
|
|
|
|
# new changes should create change requests
|
|
page.write({"content": "New content"})
|
|
# Needed to compute calculated fields
|
|
page.refresh()
|
|
self.assertNotEqual(page.content, "New content")
|
|
chreq = self.history_obj.search(
|
|
[("page_id", "=", page.id), ("state", "!=", "approved")]
|
|
)[0]
|
|
chreq.action_approve()
|
|
self.assertEqual(page.content, "New content")
|
|
|
|
def test_change_request_auto_approve(self):
|
|
page = self.page1
|
|
self.assertFalse(page.is_approval_required)
|
|
page.write({"content": "New content"})
|
|
self.assertEqual(page.content, "New content")
|
|
|
|
def test_change_request_from_scratch(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")
|
|
self.assertNotEqual(page.content, chreq.content)
|
|
self.assertNotEqual(page.approved_date, chreq.approved_date)
|
|
self.assertNotEqual(page.approved_uid, chreq.approved_uid)
|
|
|
|
chreq.action_to_approve()
|
|
self.assertEqual(chreq.state, "to approve")
|
|
self.assertNotEqual(page.content, chreq.content)
|
|
self.assertNotEqual(page.approved_date, chreq.approved_date)
|
|
self.assertNotEqual(page.approved_uid, chreq.approved_uid)
|
|
|
|
chreq.action_cancel()
|
|
self.assertEqual(chreq.state, "cancelled")
|
|
self.assertNotEqual(page.content, chreq.content)
|
|
self.assertNotEqual(page.approved_date, chreq.approved_date)
|
|
self.assertNotEqual(page.approved_uid, chreq.approved_uid)
|
|
|
|
chreq.action_draft()
|
|
self.assertEqual(chreq.state, "draft")
|
|
self.assertNotEqual(page.content, chreq.content)
|
|
self.assertNotEqual(page.approved_date, chreq.approved_date)
|
|
self.assertNotEqual(page.approved_uid, chreq.approved_uid)
|
|
|
|
chreq.action_approve()
|
|
self.assertEqual(chreq.state, "approved")
|
|
self.assertEqual(page.content, chreq.content)
|
|
self.assertEqual(page.approved_date, chreq.approved_date)
|
|
self.assertEqual(page.approved_uid, chreq.approved_uid)
|
|
|
|
def test_get_approvers_guids(self):
|
|
"""Get approver guids."""
|
|
page = self.page2
|
|
self.assertTrue(len(page.approver_group_ids) > 0)
|
|
|
|
def test_get_page_url(self):
|
|
"""Test if page url exist."""
|
|
pages = self.env["document.page.history"].search([])
|
|
page = pages[0]
|
|
self.assertIsNotNone(page.page_url)
|