mirror of
https://github.com/OCA/knowledge.git
synced 2025-12-22 13:22:19 -06:00
[IMP][10.0][document_page_approval] Change Requests and workflow improvements on documents (#155)
This commit is contained in:
committed by
Laurence Lars Labusch
parent
a22bc6d58b
commit
9426f2823c
@@ -1,2 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import test_document_page_approval, test_document_page_history_workflow
|
||||
from . import test_document_page_approval
|
||||
|
||||
@@ -1,37 +1,125 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from openerp.tests import common
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestDocumentPageApproval(common.TransactionCase):
|
||||
"""Test document page approval model."""
|
||||
|
||||
def test_get_display_content(self):
|
||||
"""Test page display content."""
|
||||
# Check content of a category
|
||||
category = self.env['document.page'].search([
|
||||
('name', '=', 'OpenERP Features')
|
||||
])
|
||||
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'
|
||||
})
|
||||
|
||||
self.assertIsNotNone(category.display_content, 'a category')
|
||||
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)
|
||||
|
||||
# Check content of a page
|
||||
pages = self.env['document.page'].search([
|
||||
('parent_id', '=', category.id)
|
||||
])
|
||||
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.display_content, 'Page content')
|
||||
|
||||
# Check if approval is required
|
||||
self.assertTrue(page.is_approval_required(page) ==
|
||||
category.approval_required)
|
||||
|
||||
# Check content of an approval page
|
||||
page.approval_required = True
|
||||
|
||||
self.assertIsNotNone(page.display_content, 'Page content')
|
||||
|
||||
# Check if approval is required
|
||||
self.assertTrue(page.is_approval_required(page))
|
||||
|
||||
# Check if parent approval is required
|
||||
self.assertTrue(page.is_parent_approval_required)
|
||||
self.assertIsNotNone(page.page_url)
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from openerp.tests import common
|
||||
# Import logger
|
||||
import logging
|
||||
|
||||
# Get the logger
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TestDocumentPageHistoryWorkflow(common.TransactionCase):
|
||||
"""Test document page history workflow."""
|
||||
|
||||
def test_can_user_approve_this_page(self):
|
||||
"""Test if a user can approve this page."""
|
||||
category = self.env.ref('document_page.demo_category1')
|
||||
category.approval_required = True
|
||||
category.approver_gid = self.env.ref(
|
||||
'document_page_approval.group_document_approver_user')
|
||||
|
||||
page = self.env['document.page'].create({
|
||||
'name': 'Test Page10',
|
||||
'content': 'A difficult test',
|
||||
'parent_id': category.id
|
||||
})
|
||||
|
||||
history = self.env['document.page.history'].search(
|
||||
[
|
||||
('page_id', '=', page.id)
|
||||
],
|
||||
limit=1,
|
||||
order='create_date DESC'
|
||||
)
|
||||
|
||||
self.assertTrue(history.can_user_approve_page)
|
||||
|
||||
def test_get_approvers_guids(self):
|
||||
"""Get approver guids."""
|
||||
category = self.env.ref('document_page.demo_category1')
|
||||
category.approval_required = True
|
||||
pages = self.env['document.page.history'].search([
|
||||
('page_id', '=', category.id)
|
||||
])
|
||||
page = pages[0]
|
||||
approvers_guid = page.get_approvers_guids()
|
||||
self.assertTrue(len(approvers_guid) > 0)
|
||||
|
||||
def test_get_approvers_email(self):
|
||||
"""Get approver email."""
|
||||
category = self.env.ref('document_page.demo_category1')
|
||||
category.approval_required = True
|
||||
pages = self.env['document.page.history'].search([
|
||||
('page_id', '=', category.id)
|
||||
])
|
||||
page = pages[0]
|
||||
_logger.info("Email: " + str(page.get_approvers_email))
|
||||
self.assertIsNotNone(page.get_approvers_email)
|
||||
|
||||
def test_get_page_url(self):
|
||||
"""Test if page url exist."""
|
||||
category = self.env.ref('document_page.demo_category1')
|
||||
category.approval_required = True
|
||||
pages = self.env['document.page.history'].search([
|
||||
('page_id', '=', category.id)
|
||||
])
|
||||
page = pages[0]
|
||||
_logger.info("Page: " + str(page.get_page_url))
|
||||
self.assertIsNotNone(page.get_page_url)
|
||||
Reference in New Issue
Block a user