Files
Odoo-Modules/fusion_accounting_reports/tests/test_drill_down_resolver.py
gsinghpal 0eee14f69a feat(fusion_accounting_reports): drill_down_resolver service
Pure-Python helper that, given an account_id and a date range, fetches
posted account.move.line records and returns a flat list of dicts ready
for the drill-down OWL dialog. Used by the engine's drill_down() method.

3 new tests, 35 total passing.

Made-with: Cursor
2026-04-19 15:14:31 -04:00

61 lines
2.0 KiB
Python

"""Tests for drill_down_resolver."""
from datetime import date, timedelta
from odoo.tests.common import TransactionCase, tagged
from odoo.addons.fusion_accounting_reports.services.drill_down_resolver import (
fetch_drill_down,
)
@tagged('post_install', '-at_install')
class TestDrillDownResolver(TransactionCase):
def test_returns_empty_for_account_with_no_lines(self):
account = self.env['account.account'].search([
('company_ids', 'in', self.env.company.id),
], limit=1)
if not account:
self.skipTest("No accounts in DB")
rows = fetch_drill_down(
self.env,
account_id=account.id,
date_from=date(2099, 1, 1),
date_to=date(2099, 12, 31),
company_id=self.env.company.id,
)
self.assertEqual(rows, [])
def test_returns_lines_for_account_with_data(self):
line = self.env['account.move.line'].search([
('parent_state', '=', 'posted'),
], limit=1)
if not line:
self.skipTest("No posted move lines in DB")
rows = fetch_drill_down(
self.env,
account_id=line.account_id.id,
date_from=line.date - timedelta(days=1),
date_to=line.date + timedelta(days=1),
company_id=line.company_id.id,
)
self.assertGreater(len(rows), 0)
ids = [r['move_line_id'] for r in rows]
self.assertIn(line.id, ids)
def test_respects_limit(self):
line = self.env['account.move.line'].search([
('parent_state', '=', 'posted'),
], limit=1)
if not line:
self.skipTest("No posted move lines in DB")
rows = fetch_drill_down(
self.env,
account_id=line.account_id.id,
date_from=date(2000, 1, 1),
date_to=date(2099, 12, 31),
company_id=line.company_id.id,
limit=2,
)
self.assertLessEqual(len(rows), 2)