Files
Odoo-Modules/fusion_accounting_reports/tests/test_fusion_report.py
gsinghpal 50f736d8a7 feat(fusion_accounting_reports): fusion.report definition model
Persistent definition of a Fusion financial report. Each report (P&L,
balance sheet, trial balance, GL) has one row in fusion.report holding
its metadata + line specs (stored as JSON for layout flexibility).

V19 conventions: models.Constraint inline, no _sql_constraints. Per-
company uniqueness on (company_id, code).

3 new tests, 27 total passing.

Made-with: Cursor
2026-04-19 15:12:38 -04:00

45 lines
1.5 KiB
Python

"""Tests for fusion.report definition model."""
from odoo.tests.common import TransactionCase, tagged
@tagged('post_install', '-at_install')
class TestFusionReport(TransactionCase):
def test_create_minimal(self):
report = self.env['fusion.report'].create({
'name': 'Test P&L',
'code': 'test_pnl_minimal',
'report_type': 'pnl',
})
self.assertEqual(report.name, 'Test P&L')
self.assertTrue(report.active)
self.assertEqual(report.default_comparison_mode, 'none')
def test_line_specs_json_roundtrip(self):
specs = [
{'label': 'Revenue', 'account_type_prefix': 'income_', 'sign': 1},
{'label': 'COGS', 'account_type_prefix': 'expense_direct_', 'sign': -1},
]
report = self.env['fusion.report'].create({
'name': 'Test',
'code': 'test_json_roundtrip',
'report_type': 'pnl',
'line_specs': specs,
})
self.assertEqual(report.line_specs, specs)
self.assertEqual(report.line_specs[0]['label'], 'Revenue')
def test_company_code_uniqueness(self):
self.env['fusion.report'].create({
'name': 'A',
'code': 'dup_code_test',
'report_type': 'pnl',
})
with self.assertRaises(Exception):
self.env['fusion.report'].create({
'name': 'B',
'code': 'dup_code_test',
'report_type': 'pnl',
})