from odoo.tests.common import TransactionCase, tagged from odoo.addons.fusion_accounting_bank_rec.services.memo_tokenizer import tokenize_memo @tagged('post_install', '-at_install') class TestMemoTokenizer(TransactionCase): def test_extracts_rbc_etf_reference(self): tokens = tokenize_memo("RBC ETF DEP REF 4831") self.assertIn('RBC', tokens) self.assertIn('ETF', tokens) self.assertIn('REF4831', tokens) def test_extracts_cheque_number(self): tokens = tokenize_memo("CHEQUE 4827 - WESTIN PLATING") self.assertIn('CHEQUE4827', tokens) self.assertIn('WESTIN', tokens) self.assertIn('PLATING', tokens) def test_strips_noise_tokens(self): tokens = tokenize_memo("PAYMENT - INV - DEP - 12345") self.assertNotIn('-', tokens) self.assertEqual([t for t in tokens if len(t) <= 1], []) def test_handles_empty_memo(self): self.assertEqual(tokenize_memo(""), []) self.assertEqual(tokenize_memo(None), []) def test_canadian_french_memo(self): tokens = tokenize_memo("PAIEMENT VIREMENT BANCAIRE") self.assertIn('PAIEMENT', tokens) self.assertIn('VIREMENT', tokens) def test_normalises_case(self): tokens = tokenize_memo("rbc etf dep ref 4831") self.assertIn('RBC', tokens) def test_handles_special_characters(self): tokens = tokenize_memo("RBC*PAYMENT/REF#4831") self.assertIn('RBC', tokens) self.assertIn('PAYMENT', tokens) self.assertIn('REF4831', tokens)