- Fix: partners can no longer have default carrier accounts that are archived. - Refactor: remove write/create overrides to replace them with computed/stored fields.
148 lines
4.8 KiB
Python
148 lines
4.8 KiB
Python
from odoo.tests import TransactionCase, tagged, Form
|
|
from odoo import Command
|
|
|
|
|
|
@tagged("post_install", "-at_install")
|
|
class TestResPartner(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
def test_default_carrier_set_on_create(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
}
|
|
)
|
|
account = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
|
|
self.assertEqual(
|
|
partner.carrier_account_ids[0], partner.default_carrier_account_id
|
|
)
|
|
|
|
def test_default_carrier_set_on_update(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
}
|
|
)
|
|
partner.write(
|
|
{
|
|
"carrier_account_ids": [
|
|
Command.create(
|
|
{
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
]
|
|
}
|
|
)
|
|
self.assertEqual(
|
|
partner.carrier_account_ids[0], partner.default_carrier_account_id
|
|
)
|
|
|
|
def test_no_change_to_default_account_id_on_update_if_already_set(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
"carrier_account_ids": [
|
|
Command.create(
|
|
{
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
],
|
|
}
|
|
)
|
|
new_account = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.delivery_local_delivery"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
self.assertNotEqual(partner.default_carrier_account_id, new_account)
|
|
|
|
def test_carrier_set_if_account_created_from_other_side(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
}
|
|
)
|
|
new_account = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
|
|
self.assertEqual(partner.default_carrier_account_id, new_account)
|
|
|
|
def test_no_archived_default_carrier_account(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
}
|
|
)
|
|
account = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
|
|
with Form(account) as account_form:
|
|
account_form.active = False
|
|
|
|
self.assertFalse(partner.default_carrier_account_id)
|
|
|
|
def test_multiple_carrier_accounts_reset_default_on_archive(self):
|
|
partner = self.env["res.partner"].create(
|
|
{
|
|
"name": "Test Partner",
|
|
}
|
|
)
|
|
account1 = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567890",
|
|
}
|
|
)
|
|
account2 = self.env["delivery.carrier.account"].create(
|
|
{
|
|
"partner_id": partner.id,
|
|
"delivery_carrier_id": self.env.ref(
|
|
"delivery.free_delivery_carrier"
|
|
).id,
|
|
"account_number": "1234567891",
|
|
}
|
|
)
|
|
self.assertEqual(partner.default_carrier_account_id, account1)
|
|
with Form(account1) as account_form:
|
|
account_form.active = False
|
|
self.assertEqual(partner.default_carrier_account_id, account2)
|