Files
account-reconcile/account_move_base_import/tests/test_base_completion.py
Damien Crier 8de48a5b12 fix test
2021-08-13 11:24:46 +02:00

113 lines
4.2 KiB
Python

# Copyright 2011-2016 Akretion
# Copyright 2011-2019 Camptocamp SA
# Copyright 2013 Savoir-faire Linux
# Copyright 2014 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from collections import namedtuple
from odoo import fields, tools
from odoo.modules import get_resource_path
from odoo.tests import common
name_completion_case = namedtuple(
"name_completion_case", ["partner_name", "line_label", "should_match"]
)
NAMES_COMPLETION_CASES = [
name_completion_case("Acsone", "Line for Acsone SA", True),
name_completion_case("Acsone", "Line for Acsone", True),
name_completion_case("Acsone", "Acsone for line", True),
name_completion_case("acsone", "Acsone for line", True),
name_completion_case("Acsone SA", "Line for Acsone SA test", True),
name_completion_case("Ac..ne", "Acsone for line", False),
name_completion_case("é@|r{}", "Acsone é@|r{} for line", True),
name_completion_case("Acsone", "A..one for line", False),
name_completion_case("A.one SA", "A.one SA for line", True),
name_completion_case(
"Acsone SA", "Line for Acsone ([^a-zA-Z0-9 -]) SA test", False
),
name_completion_case(
"Acsone ([^a-zA-Z0-9 -]) SA",
"Line for Acsone ([^a-zA-Z0-9 -]) SA " "test",
True,
),
name_completion_case(
r"Acsone (.^$*+?()[{\| -]\) SA",
r"Line for Acsone (.^$*+?()[{\| -]\) " r"SA test",
True,
),
name_completion_case("Acšone SA", "Line for Acšone SA test", True),
]
class BaseCompletion(common.TransactionCase):
def setUp(self):
super().setUp()
tools.convert_file(
self.cr,
"account",
get_resource_path("account", "test", "account_minimal_test.xml"),
{},
"init",
False,
"test",
)
self.account_move_obj = self.env["account.move"]
self.account_move_line_obj = self.env["account.move.line"]
self.company_a = self.browse_ref("base.main_company")
self.journal = self.browse_ref("account.bank_journal")
self.partner = self.browse_ref("base.res_partner_12")
self.account_id = self.ref("account.a_recv")
def test_name_completion(self):
"""Test complete partner_id from statement line label
Test the automatic completion of the partner_id based if the name of
the partner appears in the statement line label
"""
self.completion_rule_id = self.ref(
"account_move_base_import.bank_statement_completion_rule_3"
)
# Create the profile
self.journal.write(
{
"used_for_completion": True,
"rule_ids": [(6, 0, [self.completion_rule_id])],
}
)
# Create a bank statement
self.move = self.account_move_obj.create(
{"date": fields.Date.today(), "journal_id": self.journal.id}
)
for case in NAMES_COMPLETION_CASES:
self.partner.write({"name": case.partner_name})
self.move_line = self.account_move_line_obj.with_context(
check_move_validity=False
).create(
{
"account_id": self.account_id,
"credit": 1000.0,
"name": case.line_label,
"move_id": self.move.id,
}
)
self.assertFalse(
self.move_line.partner_id, "Partner_id must be blank before completion"
)
self.move.with_context(check_move_validity=False).button_auto_completion()
if case.should_match:
self.assertEqual(
self.partner,
self.move_line.partner_id,
"Missing expected partner id after completion "
"(partner_name: %s, line_name: %s)"
% (case.partner_name, case.line_label),
)
else:
self.assertNotEqual(
self.partner,
self.move_line.partner_id,
"Partner id should be empty after completion "
"(partner_name: %s, line_name: %s)"
% (case.partner_name, case.line_label),
)