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',
|
'name': 'Fusion Accounting Reports',
|
||||||
'version': '19.0.1.0.34',
|
'version': '19.0.1.0.35',
|
||||||
'category': 'Accounting/Accounting',
|
'category': 'Accounting/Accounting',
|
||||||
'summary': 'AI-augmented financial reports (P&L, balance sheet, trial balance, GL).',
|
'summary': 'AI-augmented financial reports (P&L, balance sheet, trial balance, GL).',
|
||||||
'description': """
|
'description': """
|
||||||
|
|||||||
@@ -22,3 +22,4 @@ from . import test_pdf_export
|
|||||||
from . import test_xlsx_export
|
from . import test_xlsx_export
|
||||||
from . import test_period_picker
|
from . import test_period_picker
|
||||||
from . import test_migration_round_trip
|
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