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