"""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)