From 8a3b280057bf0c7d08e675552d834ff12461c0b2 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:14:21 +0200 Subject: [PATCH 1/8] [IMP] account_banking_mandate: test performance improvement - Include context keys for avoiding mail operations overhead. --- .../tests/test_invoice_mandate.py | 90 +++++++++---------- account_banking_mandate/tests/test_mandate.py | 25 +++--- .../tests/test_payment_mode.py | 5 +- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/account_banking_mandate/tests/test_invoice_mandate.py b/account_banking_mandate/tests/test_invoice_mandate.py index e29058f48..7f62dbd27 100644 --- a/account_banking_mandate/tests/test_invoice_mandate.py +++ b/account_banking_mandate/tests/test_invoice_mandate.py @@ -8,6 +8,7 @@ from odoo.exceptions import UserError from odoo.tests.common import TransactionCase from odoo.addons.account.models.account_payment_method import AccountPaymentMethod +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT class TestInvoiceMandate(TransactionCase): @@ -192,112 +193,105 @@ class TestInvoiceMandate(TransactionCase): with self.assertRaises(UserError): invoice.mandate_id = mandate_2 - def _create_res_partner(self, name): - return self.env["res.partner"].create({"name": name}) + @classmethod + def _create_res_partner(cls, name): + return cls.env["res.partner"].create({"name": name}) - def _create_res_bank(self, name, bic, city, country): - return self.env["res.bank"].create( + @classmethod + def _create_res_bank(cls, name, bic, city, country): + return cls.env["res.bank"].create( {"name": name, "bic": bic, "city": city, "country": country.id} ) - def setUp(self): - res = super(TestInvoiceMandate, self).setUp() - self.company = self.env.ref("base.main_company") - - self.partner = self._create_res_partner("Peter with ACME Bank") - self.acme_bank = self._create_res_bank( - "ACME Bank", "GEBABEBB03B", "Charleroi", self.env.ref("base.be") + @classmethod + def setUpClass(cls): + res = super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.company = cls.env.ref("base.main_company") + cls.partner = cls._create_res_partner("Peter with ACME Bank") + cls.acme_bank = cls._create_res_bank( + "ACME Bank", "GEBABEBB03B", "Charleroi", cls.env.ref("base.be") ) - - bank_account = self.env["res.partner.bank"].create( + bank_account = cls.env["res.partner.bank"].create( { "acc_number": "0023032234211123", - "partner_id": self.partner.id, - "bank_id": self.acme_bank.id, - "company_id": self.company.id, + "partner_id": cls.partner.id, + "bank_id": cls.acme_bank.id, + "company_id": cls.company.id, } ) - - self.company_2 = self.env["res.company"].create({"name": "Company 2"}) - - self.mandate = self.env["account.banking.mandate"].create( + cls.company_2 = cls.env["res.company"].create({"name": "Company 2"}) + cls.mandate = cls.env["account.banking.mandate"].create( { "partner_bank_id": bank_account.id, "signature_date": "2015-01-01", - "company_id": self.company.id, + "company_id": cls.company.id, } ) - - self.mandate.validate() - - self.mode_inbound_acme = self.env["account.payment.mode"].create( + cls.mandate.validate() + cls.mode_inbound_acme = cls.env["account.payment.mode"].create( { "name": "Inbound Credit ACME Bank", - "company_id": self.company.id, + "company_id": cls.company.id, "bank_account_link": "variable", - "payment_method_id": self.env.ref( + "payment_method_id": cls.env.ref( "account.account_payment_method_manual_in" ).id, } ) - bank_journal = self.env["account.journal"].search( + bank_journal = cls.env["account.journal"].search( [ ("type", "=", "bank"), - ("company_id", "=", self.company.id), + ("company_id", "=", cls.company.id), ], limit=1, ) - self.mode_inbound_acme.variable_journal_ids = bank_journal - self.mode_inbound_acme.payment_method_id.mandate_required = True - self.mode_inbound_acme.payment_order_ok = True - - self.partner.customer_payment_mode_id = self.mode_inbound_acme - - self.invoice_account = self.env["account.account"].search( + cls.mode_inbound_acme.variable_journal_ids = bank_journal + cls.mode_inbound_acme.payment_method_id.mandate_required = True + cls.mode_inbound_acme.payment_order_ok = True + cls.partner.customer_payment_mode_id = cls.mode_inbound_acme + cls.invoice_account = cls.env["account.account"].search( [ ("account_type", "=", "asset_receivable"), - ("company_id", "=", self.company.id), + ("company_id", "=", cls.company.id), ], limit=1, ) invoice_line_account = ( - self.env["account.account"] + cls.env["account.account"] .search( [ ("account_type", "=", "expense"), - ("company_id", "=", self.company.id), + ("company_id", "=", cls.company.id), ], limit=1, ) .id ) - invoice_vals = [ ( 0, 0, { - "product_id": self.env.ref("product.product_product_4").id, + "product_id": cls.env.ref("product.product_product_4").id, "quantity": 1.0, "account_id": invoice_line_account, "price_unit": 200.00, }, ) ] - - self.invoice = self.env["account.move"].create( + cls.invoice = cls.env["account.move"].create( { - "partner_id": self.partner.id, + "partner_id": cls.partner.id, "move_type": "out_invoice", - "company_id": self.company.id, - "journal_id": self.env["account.journal"] + "company_id": cls.company.id, + "journal_id": cls.env["account.journal"] .search( - [("type", "=", "sale"), ("company_id", "=", self.company.id)], + [("type", "=", "sale"), ("company_id", "=", cls.company.id)], limit=1, ) .id, "invoice_line_ids": invoice_vals, } ) - return res diff --git a/account_banking_mandate/tests/test_mandate.py b/account_banking_mandate/tests/test_mandate.py index d383ac37c..4328c90aa 100644 --- a/account_banking_mandate/tests/test_mandate.py +++ b/account_banking_mandate/tests/test_mandate.py @@ -7,22 +7,27 @@ from odoo import fields from odoo.exceptions import UserError, ValidationError from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestMandate(TransactionCase): - def setUp(self): - super(TestMandate, self).setUp() - self.company = self.env.company - self.company_2 = self.env["res.company"].create({"name": "company 2"}) - self.company_2.partner_id.company_id = self.company_2.id - self.bank_account = self.env.ref("account_payment_mode.res_partner_12_iban") - self.bank_account.partner_id.company_id = self.company.id - self.mandate = self.env["account.banking.mandate"].create( + @classmethod + def setUpClass(cls): + res = super(TestMandate, cls).setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.company = cls.env.ref("base.main_company") + cls.company_2 = cls.env["res.company"].create({"name": "Company 2"}) + cls.company_2.partner_id.company_id = cls.company_2.id + cls.bank_account = cls.env.ref("account_payment_mode.res_partner_12_iban") + cls.bank_account.partner_id.company_id = cls.company.id + cls.mandate = cls.env["account.banking.mandate"].create( { - "partner_bank_id": self.bank_account.id, + "partner_bank_id": cls.bank_account.id, "signature_date": "2015-01-01", - "company_id": self.company.id, + "company_id": cls.company.id, } ) + return res def test_mandate_01(self): self.assertEqual(self.mandate.state, "draft") diff --git a/account_payment_order/tests/test_payment_mode.py b/account_payment_order/tests/test_payment_mode.py index 51bce1e70..a5c30f520 100644 --- a/account_payment_order/tests/test_payment_mode.py +++ b/account_payment_order/tests/test_payment_mode.py @@ -18,8 +18,9 @@ class TestPaymentMode(TransactionCase): AccountPaymentMethod._get_payment_method_information ) - def _get_payment_method_information(self): - res = Method_get_payment_method_information(self) + @classmethod + def _get_payment_method_information(cls): + res = Method_get_payment_method_information(cls) res["IN"] = {"mode": "multi", "domain": [("type", "=", "bank")]} res["IN2"] = {"mode": "multi", "domain": [("type", "=", "bank")]} res["electronic_out"] = {"mode": "multi", "domain": [("type", "=", "bank")]} From c298954a02fe70c85385da10586244e45b83a388 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:18:30 +0200 Subject: [PATCH 2/8] [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. --- .../tests/test_account_payment_order.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/account_banking_mandate_contact/tests/test_account_payment_order.py b/account_banking_mandate_contact/tests/test_account_payment_order.py index 22768bc65..9d1837ee3 100644 --- a/account_banking_mandate_contact/tests/test_account_payment_order.py +++ b/account_banking_mandate_contact/tests/test_account_payment_order.py @@ -4,21 +4,14 @@ from odoo import fields from odoo.tests.common import Form, TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestAccountPaymentOrder(TransactionCase): @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.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) 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") From d571a0261dc9536d4aee49fcd563692632eea723 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:20:46 +0200 Subject: [PATCH 3/8] [IMP] account_banking_sepa_credit_transfer: test performance improvement --- account_banking_sepa_credit_transfer/tests/test_sct.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/account_banking_sepa_credit_transfer/tests/test_sct.py b/account_banking_sepa_credit_transfer/tests/test_sct.py index aba156811..514fcd985 100644 --- a/account_banking_sepa_credit_transfer/tests/test_sct.py +++ b/account_banking_sepa_credit_transfer/tests/test_sct.py @@ -11,11 +11,14 @@ from lxml import etree from odoo.exceptions import UserError from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestSCT(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) cls.account_model = cls.env["account.account"] cls.move_model = cls.env["account.move"] cls.journal_model = cls.env["account.journal"] From 406173576b56aba4524cb9f5570216d46ed2eb18 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:22:10 +0200 Subject: [PATCH 4/8] [IMP] account_banking_sepa_direct_debit: test performance improvement - Switch to setUpClass (if needed) for avoiding repeat the same setup for each test. - Include context keys for avoiding mail operations overhead. --- .../tests/test_mandate.py | 21 ++++++++++++++----- .../tests/test_sdd.py | 3 +++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/account_banking_sepa_direct_debit/tests/test_mandate.py b/account_banking_sepa_direct_debit/tests/test_mandate.py index eff7e8ea8..090c583bb 100644 --- a/account_banking_sepa_direct_debit/tests/test_mandate.py +++ b/account_banking_sepa_direct_debit/tests/test_mandate.py @@ -50,11 +50,22 @@ class TestMandate(TransactionCase): self.assertEqual(self.mandate.state, "draft") self.assertTrue(self.mandate.is_sent) - def setUp(self): - res = super().setUp() - self.partner = self.env.ref("base.res_partner_12") - bank_account = self.env.ref("account_payment_mode.res_partner_12_iban") - self.mandate = self.env["account.banking.mandate"].create( + @classmethod + def setUpClass(cls): + res = 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.ref("base.res_partner_12") + bank_account = cls.env.ref("account_payment_mode.res_partner_12_iban") + cls.mandate = cls.env["account.banking.mandate"].create( { "partner_bank_id": bank_account.id, "format": "sepa", diff --git a/account_banking_sepa_direct_debit/tests/test_sdd.py b/account_banking_sepa_direct_debit/tests/test_sdd.py index aa2fdaeb3..49fdd7cc5 100644 --- a/account_banking_sepa_direct_debit/tests/test_sdd.py +++ b/account_banking_sepa_direct_debit/tests/test_sdd.py @@ -10,11 +10,14 @@ from odoo import fields from odoo.tests.common import TransactionCase from odoo.tools import float_compare +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestSDDBase(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) cls.company_B = cls.env["res.company"].create({"name": "Company B"}) cls.account_payable_company_B = cls.env["account.account"].create( { From fb443140a8496b64e22a41bd05ece266b4004d61 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:23:06 +0200 Subject: [PATCH 5/8] [IMP] account_payment_mode: test performance improvement - Include context keys for avoiding mail operations overhead. --- account_payment_mode/tests/test_account_payment_mode.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/account_payment_mode/tests/test_account_payment_mode.py b/account_payment_mode/tests/test_account_payment_mode.py index db23e176e..d2be3c7af 100644 --- a/account_payment_mode/tests/test_account_payment_mode.py +++ b/account_payment_mode/tests/test_account_payment_mode.py @@ -4,12 +4,14 @@ from odoo.exceptions import UserError, ValidationError from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestAccountPaymentMode(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) cls.res_users_model = cls.env["res.users"] cls.journal_model = cls.env["account.journal"] From 7d9d5400fc4115571249d1eae5101a343f6ab6c4 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:27:21 +0200 Subject: [PATCH 6/8] [IMP] account_payment_order: test performance improvement - Create setUpClass method - Switch to setUpClass (if needed) for avoiding repeat the same setup for each test. - Include context keys for avoiding mail operations overhead. --- account_payment_order/tests/test_bank.py | 7 +++++++ account_payment_order/tests/test_payment_mode.py | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/account_payment_order/tests/test_bank.py b/account_payment_order/tests/test_bank.py index d5d78bf81..218f96b78 100644 --- a/account_payment_order/tests/test_bank.py +++ b/account_payment_order/tests/test_bank.py @@ -4,8 +4,15 @@ from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestBank(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + def test_bank(self): bank = self.env["res.bank"].search([], limit=1) self.assertTrue(bank) diff --git a/account_payment_order/tests/test_payment_mode.py b/account_payment_order/tests/test_payment_mode.py index a5c30f520..f1f346cb3 100644 --- a/account_payment_order/tests/test_payment_mode.py +++ b/account_payment_order/tests/test_payment_mode.py @@ -18,7 +18,6 @@ class TestPaymentMode(TransactionCase): AccountPaymentMethod._get_payment_method_information ) - @classmethod def _get_payment_method_information(cls): res = Method_get_payment_method_information(cls) res["IN"] = {"mode": "multi", "domain": [("type", "=", "bank")]} From 365ea506a6fbe321cae54cf15b3c6d6ed76b0eff Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:33:02 +0200 Subject: [PATCH 7/8] [IMP] account_payment_partner: test performance improvement - Include context keys for avoiding mail operations overhead. --- account_payment_partner/tests/test_account_payment_partner.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/account_payment_partner/tests/test_account_payment_partner.py b/account_payment_partner/tests/test_account_payment_partner.py index 517746b27..ec8dcf20d 100644 --- a/account_payment_partner/tests/test_account_payment_partner.py +++ b/account_payment_partner/tests/test_account_payment_partner.py @@ -7,12 +7,14 @@ from odoo.exceptions import UserError, ValidationError from odoo.fields import Date from odoo.tests.common import Form, TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class TestAccountPaymentPartner(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) cls.res_users_model = cls.env["res.users"] cls.move_model = cls.env["account.move"] From 79d4b90df56bdb82b351be97e9188ffac772d4c5 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Mon, 16 Oct 2023 12:34:55 +0200 Subject: [PATCH 8/8] [IMP] account_payment_sale: test performance improvement - Create setUpClass method - Include context keys for avoiding mail operations overhead. --- account_payment_sale/tests/common.py | 5 +++-- account_payment_sale/tests/test_sale_order.py | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/account_payment_sale/tests/common.py b/account_payment_sale/tests/common.py index a2d6ae887..e49c8c7bd 100644 --- a/account_payment_sale/tests/common.py +++ b/account_payment_sale/tests/common.py @@ -3,13 +3,14 @@ from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + class CommonTestCase(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) - + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) cls.bank = cls.env["res.partner.bank"].create( {"acc_number": "test", "partner_id": cls.env.user.company_id.partner_id.id} ) diff --git a/account_payment_sale/tests/test_sale_order.py b/account_payment_sale/tests/test_sale_order.py index fcaf0f0fa..57abac429 100644 --- a/account_payment_sale/tests/test_sale_order.py +++ b/account_payment_sale/tests/test_sale_order.py @@ -3,10 +3,17 @@ from odoo.tests import Form +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + from .common import CommonTestCase class TestSaleOrder(CommonTestCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + def create_sale_order(self, payment_mode=None): with Form(self.env["sale.order"]) as sale_form: sale_form.partner_id = self.base_partner