knowledge/document_page_approval/tests/test_document_page_approval.py

126 lines
4.7 KiB
Python

# -*- coding: utf-8 -*-
from odoo.tests import common
class TestDocumentPageApproval(common.TransactionCase):
def setUp(self):
super(TestDocumentPageApproval, self).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')
# 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')
self.assertNotEqual(chreq.content, page.content)
# who_am_i
self.assertTrue(chreq.am_i_owner)
self.assertTrue(chreq.am_i_approver)
# approve
chreq.signal_workflow('page_approval_approve')
self.assertEqual(chreq.state, 'approved')
self.assertEqual(chreq.content, page.content)
# new changes should create change requests
page.write({'content': 'New content'})
self.assertNotEqual(page.content, 'New content')
chreq = self.history_obj.search([
('page_id', '=', page.id),
('state', '!=', 'approved')
])[0]
chreq.signal_workflow('page_approval_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')
]).signal_workflow('page_approval_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.signal_workflow('page_approval_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.signal_workflow('page_approval_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.signal_workflow('page_approval_reopen')
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.signal_workflow('page_approval_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)