Files
Odoo-Modules/fusion_accounting_bank_rec/tests/test_factories.py
gsinghpal fcecf9d925 test(fusion_accounting_bank_rec): test data factories for bank-rec testing
Provides make_bank_journal, make_bank_statement, make_bank_line,
make_invoice, make_vendor_bill, make_suggestion, make_pattern,
make_precedent, make_reconcileable_pair helpers used across the
bank-rec test suite. Replaces the original plan's SQL-fixture capture
with programmatic factories — same testing intent, simpler maintenance,
no real Westin data baked into the repo.

Note: the original plan called for 5 SQL fixtures captured from the local
DB (westin_simple_match.sql, westin_partial_chain.sql, etc.). Those are
replaced by factory-driven test creation in Task 19 — eliminates fragile
hand-curated SQL while testing the same code paths.

Made-with: Cursor
2026-04-19 11:05:06 -04:00

75 lines
3.3 KiB
Python

"""Smoke tests verifying the factories produce usable records.
Not testing factory correctness exhaustively — just that each helper
returns a record of the expected type with the expected basic state."""
from odoo.tests.common import TransactionCase, tagged
from . import _factories as f
@tagged('post_install', '-at_install')
class TestFactories(TransactionCase):
def test_make_bank_journal(self):
journal = f.make_bank_journal(self.env)
self.assertEqual(journal._name, 'account.journal')
self.assertEqual(journal.type, 'bank')
def test_make_bank_statement(self):
statement = f.make_bank_statement(self.env)
self.assertEqual(statement._name, 'account.bank.statement')
self.assertTrue(statement.journal_id)
def test_make_bank_line(self):
line = f.make_bank_line(self.env, amount=250.00, memo='Smoke memo')
self.assertEqual(line._name, 'account.bank.statement.line')
self.assertEqual(line.amount, 250.00)
self.assertEqual(line.payment_ref, 'Smoke memo')
self.assertFalse(line.is_reconciled)
def test_make_bank_line_with_partner(self):
partner = self.env['res.partner'].create({'name': 'Factory Partner'})
line = f.make_bank_line(self.env, partner=partner, amount=500)
self.assertEqual(line.partner_id, partner)
def test_make_invoice_posted(self):
partner = self.env['res.partner'].create({'name': 'Invoice Partner'})
invoice = f.make_invoice(self.env, partner=partner, amount=300)
self.assertEqual(invoice._name, 'account.move')
self.assertEqual(invoice.move_type, 'out_invoice')
self.assertEqual(invoice.state, 'posted')
self.assertAlmostEqual(invoice.amount_total, 300, places=2)
def test_make_vendor_bill_posted(self):
partner = self.env['res.partner'].create({'name': 'Vendor Partner'})
bill = f.make_vendor_bill(self.env, partner=partner, amount=400)
self.assertEqual(bill.move_type, 'in_invoice')
self.assertEqual(bill.state, 'posted')
def test_make_suggestion(self):
line = f.make_bank_line(self.env, amount=100)
sug = f.make_suggestion(self.env, statement_line=line, confidence=0.85)
self.assertEqual(sug._name, 'fusion.reconcile.suggestion')
self.assertEqual(sug.confidence, 0.85)
self.assertEqual(sug.state, 'pending')
def test_make_pattern(self):
partner = self.env['res.partner'].create({'name': 'Pattern Partner'})
pattern = f.make_pattern(self.env, partner=partner, reconcile_count=20)
self.assertEqual(pattern._name, 'fusion.reconcile.pattern')
self.assertEqual(pattern.reconcile_count, 20)
def test_make_precedent(self):
partner = self.env['res.partner'].create({'name': 'Precedent Partner'})
precedent = f.make_precedent(self.env, partner=partner, amount=999.99)
self.assertEqual(precedent._name, 'fusion.reconcile.precedent')
self.assertEqual(precedent.amount, 999.99)
self.assertEqual(precedent.source, 'manual')
def test_make_reconcileable_pair(self):
bank_line, recv_lines = f.make_reconcileable_pair(self.env, amount=750)
self.assertEqual(bank_line.amount, 750.00)
self.assertGreater(len(recv_lines), 0)
self.assertAlmostEqual(sum(recv_lines.mapped('amount_residual')), 750, places=2)