[IMP] account_banking_mandate_contact: test performance improvement

- Switch to setUpClass for avoiding repeat the same setup for each test.
- Include context keys for avoiding mail operations overhead.
This commit is contained in:
josep-tecnativa
2023-10-16 12:18:30 +02:00
committed by sygel
parent 7775d105f4
commit cad5df2386
4 changed files with 52 additions and 37 deletions

View File

@@ -7,7 +7,7 @@ Account Banking Mandate Contact
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:72ef0855d177fa6dd1f3596940a04f53c849846bbe4590ff8a273197d0eaea1e
!! source digest: sha256:c037b632e64403ec6e4d61e7275eece4b909b3cdfe5199867e18ae8e362381bb
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png

View File

@@ -3,7 +3,7 @@
{
"name": "Account Banking Mandate Contact",
"summary": "Assign specific banking mandates in contact level",
"version": "15.0.1.0.0",
"version": "15.0.1.0.1",
"development_status": "Production/Stable",
"category": "Banking addons",
"website": "https://github.com/OCA/bank-payment",

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:72ef0855d177fa6dd1f3596940a04f53c849846bbe4590ff8a273197d0eaea1e
!! source digest: sha256:c037b632e64403ec6e4d61e7275eece4b909b3cdfe5199867e18ae8e362381bb
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/bank-payment/tree/15.0/account_banking_mandate_contact"><img alt="OCA/bank-payment" src="https://img.shields.io/badge/github-OCA%2Fbank--payment-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/bank-payment-15-0/bank-payment-15-0-account_banking_mandate_contact"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/bank-payment&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to select a specific banking mandate

View File

@@ -10,52 +10,64 @@ from odoo.addons.account.models.account_payment_method import AccountPaymentMeth
class TestAccountPaymentOrder(TransactionCase):
def setUp(self):
super().setUp()
self.partner = self.env["res.partner"].create({"name": "Test Partner"})
self.product = self.env["product.product"].create({"name": "Test product"})
self.partner_bank_core = self._create_res_partner_bank("N-CORE")
self.mandate_core = self._create_mandate(self.partner_bank_core, "CORE")
self.partner_bank_b2b = self._create_res_partner_bank("N-B2B")
self.mandate_b2b = self._create_mandate(self.partner_bank_b2b, "B2B")
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(
context=dict(
cls.env.context,
mail_create_nolog=True,
mail_create_nosubscribe=True,
mail_notrack=True,
no_reset_password=True,
tracking_disable=True,
)
)
cls.partner = cls.env["res.partner"].create({"name": "Test Partner"})
cls.product = cls.env["product.product"].create({"name": "Test product"})
cls.partner_bank_core = cls._create_res_partner_bank("N-CORE")
cls.mandate_core = cls._create_mandate(cls.partner_bank_core, "CORE")
cls.partner_bank_b2b = cls._create_res_partner_bank("N-B2B")
cls.mandate_b2b = cls._create_mandate(cls.partner_bank_b2b, "B2B")
payment_method_vals = {
"name": "SEPA",
"code": "sepa_direct_debit",
"payment_type": "inbound",
"bank_account_required": True,
}
self.method_sepa = self._create_multi_bank_payment_method(payment_method_vals)
self.journal_bank = self.env["account.journal"].create(
cls.method_sepa = cls._create_multi_bank_payment_method(payment_method_vals)
cls.journal_bank = cls.env["account.journal"].create(
{"name": "BANK", "type": "bank", "code": "bank"}
)
payment_form = Form(self.env["account.payment.mode"])
payment_form = Form(cls.env["account.payment.mode"])
payment_form.name = "SEPA (CORE)"
payment_form.payment_method_id = self.method_sepa
payment_form.payment_method_id = cls.method_sepa
payment_form.bank_account_link = "fixed"
payment_form.fixed_journal_id = self.journal_bank
payment_form.fixed_journal_id = cls.journal_bank
payment_form.payment_order_ok = True
self.payment_core = payment_form.save()
self.payment_b2b = self.payment_core.copy({"name": "SEPA B2B"})
self.partner.customer_payment_mode_id = self.payment_core.id
self.env["account.journal"].create(
cls.payment_core = payment_form.save()
cls.payment_b2b = cls.payment_core.copy({"name": "SEPA B2B"})
cls.partner.customer_payment_mode_id = cls.payment_core.id
cls.env["account.journal"].create(
{"name": "SALE", "type": "sale", "code": "sale"}
)
self.invoice = self._create_invoice()
cls.invoice = cls._create_invoice()
payment_order_form = Form(
self.env["account.payment.order"].with_context(
cls.env["account.payment.order"].with_context(
default_payment_type="inbound"
)
)
payment_order_form.payment_mode_id = self.payment_core
self.payment_order = payment_order_form.save()
payment_order_form.payment_mode_id = cls.payment_core
cls.payment_order = payment_order_form.save()
def _create_multi_bank_payment_method(self, payment_method_vals):
@classmethod
def _create_multi_bank_payment_method(cls, payment_method_vals):
method_get_payment_method_information = (
AccountPaymentMethod._get_payment_method_information
)
def _get_payment_method_information(self):
res = method_get_payment_method_information(self)
def _get_payment_method_information(cls):
res = method_get_payment_method_information(cls)
res[payment_method_vals["code"]] = {
"mode": "multi",
"domain": [("type", "=", "bank")],
@@ -67,30 +79,33 @@ class TestAccountPaymentOrder(TransactionCase):
"_get_payment_method_information",
_get_payment_method_information,
):
return self.env["account.payment.method"].create(payment_method_vals)
return cls.env["account.payment.method"].create(payment_method_vals)
def _create_res_partner_bank(self, acc_number):
res_partner_bank_form = Form(self.env["res.partner.bank"])
res_partner_bank_form.partner_id = self.partner
@classmethod
def _create_res_partner_bank(cls, acc_number):
res_partner_bank_form = Form(cls.env["res.partner.bank"])
res_partner_bank_form.partner_id = cls.partner
res_partner_bank_form.acc_number = acc_number
return res_partner_bank_form.save()
def _create_mandate(self, partner_bank, scheme):
mandate_form = Form(self.env["account.banking.mandate"])
@classmethod
def _create_mandate(cls, partner_bank, scheme):
mandate_form = Form(cls.env["account.banking.mandate"])
mandate_form.partner_bank_id = partner_bank
mandate_form.signature_date = fields.Date.from_string("2021-01-01")
mandate = mandate_form.save()
mandate.validate()
return mandate
def _create_invoice(self):
@classmethod
def _create_invoice(cls):
invoice_form = Form(
self.env["account.move"].with_context(default_move_type="out_invoice")
cls.env["account.move"].with_context(default_move_type="out_invoice")
)
invoice_form.partner_id = self.partner
invoice_form.partner_id = cls.partner
invoice_form.invoice_date = fields.Date.from_string("2021-01-01")
with invoice_form.invoice_line_ids.new() as line_form:
line_form.product_id = self.product
line_form.product_id = cls.product
line_form.quantity = 1
line_form.price_unit = 30
line_form.tax_ids.clear()