test(fusion_accounting_reports): coexistence behavior
Mirrors Phase 1's coexistence test pattern. Verifies: - The coexistence group (group_fusion_show_when_enterprise_absent) exists and is referenceable - The reports engine model (fusion.report.engine) is always registered, regardless of Enterprise install state - The Financial Reports root menu requires the coexistence group - The Open Report... sub-menu (period picker wizard) is gated too Uses V19 group_ids attribute with a graceful fallback to groups_id for older runtime variants. Tests: 3 new (test_coexistence.py). Net 115 -> 118. Made-with: Cursor
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
'name': 'Fusion Accounting Reports',
|
||||
'version': '19.0.1.0.34',
|
||||
'version': '19.0.1.0.35',
|
||||
'category': 'Accounting/Accounting',
|
||||
'summary': 'AI-augmented financial reports (P&L, balance sheet, trial balance, GL).',
|
||||
'description': """
|
||||
|
||||
@@ -22,3 +22,4 @@ from . import test_pdf_export
|
||||
from . import test_xlsx_export
|
||||
from . import test_period_picker
|
||||
from . import test_migration_round_trip
|
||||
from . import test_coexistence
|
||||
|
||||
39
fusion_accounting_reports/tests/test_coexistence.py
Normal file
39
fusion_accounting_reports/tests/test_coexistence.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""Coexistence tests for fusion_accounting_reports.
|
||||
|
||||
Mirrors Phase 1's coexistence test pattern: verifies the menu requires
|
||||
the coexistence group, and the engine model is always available."""
|
||||
|
||||
from odoo.tests.common import TransactionCase, tagged
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestReportsCoexistence(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.coex_group = self.env.ref(
|
||||
'fusion_accounting_core.group_fusion_show_when_enterprise_absent',
|
||||
raise_if_not_found=False,
|
||||
)
|
||||
self.assertIsNotNone(self.coex_group, "Coexistence group must exist")
|
||||
|
||||
def test_engine_always_available(self):
|
||||
"""The engine is registered regardless of Enterprise install state."""
|
||||
self.assertIn('fusion.report.engine', self.env.registry)
|
||||
|
||||
def test_menu_gated_by_coexistence_group(self):
|
||||
menu = self.env.ref('fusion_accounting_reports.menu_fusion_reports_root',
|
||||
raise_if_not_found=False)
|
||||
if not menu:
|
||||
self.skipTest("Menu not loaded")
|
||||
menu_groups = getattr(menu, 'group_ids', None) or menu.groups_id
|
||||
self.assertIn(self.coex_group, menu_groups,
|
||||
"Reports root menu must require the coexistence group")
|
||||
|
||||
def test_period_picker_wizard_gated_too(self):
|
||||
menu = self.env.ref('fusion_accounting_reports.menu_fusion_reports_open',
|
||||
raise_if_not_found=False)
|
||||
if not menu:
|
||||
self.skipTest("Menu not loaded")
|
||||
menu_groups = getattr(menu, 'group_ids', None) or menu.groups_id
|
||||
self.assertIn(self.coex_group, menu_groups)
|
||||
Reference in New Issue
Block a user