[FIX]doument_page_portal: added test cases

This commit is contained in:
Davit Lomauridze 2024-08-13 15:59:29 +04:00
parent 27b3afcd02
commit f1e95e4812

View File

@ -1,76 +1,103 @@
# Path: addons/document_page_portal/tests/test_document_controller.py # Path: addons/document_page_portal/tests/test_document_controller.py
from odoo.tests.common import HttpCase, tagged
from odoo.exceptions import AccessError, MissingError
from odoo import fields as odoo_fields from odoo import fields as odoo_fields
from odoo.exceptions import AccessError, MissingError
from odoo.tests.common import HttpCase, tagged
@tagged('post_install', '-at_install') @tagged("post_install", "-at_install")
class TestDocumentPagePortal(HttpCase): class TestDocumentPagePortal(HttpCase):
def setUp(self): def setUp(self):
super(TestDocumentPagePortal, self).setUp() super(TestDocumentPagePortal, self).setUp()
self.portal_user = self.env.ref('base.public_user') self.portal_user = self.env.ref("base.public_user")
self.document_page_model = self.env['document.page'] self.document_page_model = self.env["document.page"]
def test_prepare_portal_layout_values(self): def test_prepare_portal_layout_values(self):
"""Test _prepare_portal_layout_values method.""" """Test _prepare_portal_layout_values method."""
with self.env.cr.savepoint(): # Manually call the method from the controller instance
self.env = self.env(user=self.portal_user) portal_controller = (
values = self.env['portal.customer.portal']._prepare_portal_layout_values() self.env["ir.http"]
document_page_count = self.document_page_model.search_count( .sudo()
[('type', '=', 'content')] ._get_class(
) "odoo.addons.document_page_portal.controllers.portal.CustomerPortal"
self.assertEqual(values.get('document_page_count'), document_page_count) )()
)
values = portal_controller._prepare_portal_layout_values()
document_page_count = self.document_page_model.search_count(
[("type", "=", "content")]
)
self.assertEqual(values.get("document_page_count"), document_page_count)
def test_get_archive_groups(self): def test_get_archive_groups(self):
"""Test _get_archive_groups method.""" """Test _get_archive_groups method."""
with self.env.cr.savepoint(): # Manually call the method from the controller instance
self.env = self.env(user=self.portal_user) portal_controller = (
self.env["ir.http"]
.sudo()
._get_class(
"odoo.addons.document_page_portal.controllers.portal.CustomerPortal"
)()
)
domain = [('type', '=', 'content')] domain = [("type", "=", "content")]
groups = self.env['portal.customer.portal']._get_archive_groups( groups = portal_controller._get_archive_groups("document.page", domain)
'document.page', domain self.assertTrue(isinstance(groups, list))
) self.assertGreaterEqual(
self.assertTrue(isinstance(groups, list)) len(groups), 0
self.assertGreaterEqual(len(groups), 0) # Depending on the data, there could be 0 or more groups ) # Depending on the data, there could be 0 or more groups
def test_portal_my_knowledge_document_pages(self): def test_portal_my_knowledge_document_pages(self):
"""Test portal_my_knowledge_document_pages route.""" """Test portal_my_knowledge_document_pages route."""
with self.env.cr.savepoint(): with self.env.cr.savepoint():
self.env = self.env(user=self.portal_user) self.env = self.env(user=self.portal_user)
result = self.url_open('/my/knowledge/documents') result = self.url_open("/my/knowledge/documents")
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
# Test with search query # Test with search query
result = self.url_open('/my/knowledge/documents?search=test') result = self.url_open("/my/knowledge/documents?search=test")
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
# Test with date filter # Test with date filter
date_begin = odoo_fields.Date.to_string(odoo_fields.Date.today()) date_begin = odoo_fields.Date.to_string(odoo_fields.Date.today())
date_end = odoo_fields.Date.to_string(odoo_fields.Date.today()) date_end = odoo_fields.Date.to_string(odoo_fields.Date.today())
result = self.url_open(f'/my/knowledge/documents?date_begin={date_begin}&date_end={date_end}') result = self.url_open(
f"/my/knowledge/documents?date_begin={date_begin}&date_end={date_end}"
)
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
def test_document_pages_followup(self): def test_document_pages_followup(self):
"""Test document_pages_followup route.""" """Test document_pages_followup route."""
with self.env.cr.savepoint(): with self.env.cr.savepoint():
self.env = self.env(user=self.portal_user) self.env = self.env(user=self.portal_user)
# Create a document.page record to test with
document_page = self.document_page_model.create(
{"name": "Test Document", "type": "content"}
)
document_page = self.document_page_model.create({ # Test accessing the document page with valid ID
'name': 'Test Document', result = self.url_open(f"/knowledge/document/{document_page.id}")
'type': 'content'
})
result = self.url_open(f'/knowledge/document/{document_page.id}')
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
# Test with an invalid document_page_id
with self.assertRaises(MissingError): with self.assertRaises(MissingError):
self.env['portal.customer.portal']._document_check_access( portal_controller = (
'document.page', 999999 self.env["ir.http"]
.sudo()
._get_class(
"odoo.addons.document_page_portal.controllers.portal.CustomerPortal"
)()
) )
portal_controller._document_check_access("document.page", 999999)
# Test access with an invalid token (simulating a public user access)
with self.assertRaises(AccessError): with self.assertRaises(AccessError):
self.env['portal.customer.portal']._document_check_access( portal_controller = (
'document.page', document_page.id, access_token='invalid_token' self.env["ir.http"]
.sudo()
._get_class(
"odoo.addons.document_page_portal.controllers.portal.CustomerPortal"
)()
)
portal_controller._document_check_access(
"document.page", document_page.id, access_token="invalid_token"
) )