You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.0 KiB
84 lines
3.0 KiB
# Copyright 2021 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
|
|
from odoo.exceptions import ValidationError
|
|
from odoo.tests.common import SavepointCase
|
|
|
|
|
|
class TestPartnerIdentificationUniqueByCategory(SavepointCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
|
|
cls.category_1 = cls.env["res.partner.id_category"].create(
|
|
{"code": "UID", "name": "Group Id"}
|
|
)
|
|
cls.category_2 = cls.env["res.partner.id_category"].create(
|
|
{"code": "GID", "name": "User Id"}
|
|
)
|
|
cls.partner_1 = cls.env.ref("base.res_partner_1")
|
|
cls.partner_2 = cls.env.ref("base.res_partner_2")
|
|
|
|
def test_id_creation(self):
|
|
"""Check Id unique (or not) validation."""
|
|
self.category_1.has_unique_numbers = True
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123",
|
|
"category_id": self.category_1.id,
|
|
"partner_id": self.partner_1.id,
|
|
}
|
|
)
|
|
message = (
|
|
"The Id 123 in the category Group Id could not be created "
|
|
"because it already exists"
|
|
)
|
|
with self.assertRaisesRegex(ValidationError, message):
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123",
|
|
"category_id": self.category_1.id,
|
|
"partner_id": self.partner_2.id,
|
|
}
|
|
)
|
|
# Allow to create same id in an other category
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123",
|
|
"category_id": self.category_2.id,
|
|
"partner_id": self.partner_2.id,
|
|
}
|
|
)
|
|
self.category_1.has_unique_numbers = False
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123",
|
|
"category_id": self.category_1.id,
|
|
"partner_id": self.partner_2.id,
|
|
}
|
|
)
|
|
|
|
def test_category_unique_activation(self):
|
|
"""Check there is no duplicate when enabling unicity."""
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123456",
|
|
"category_id": self.category_1.id,
|
|
"partner_id": self.partner_1.id,
|
|
}
|
|
)
|
|
self.category_1.has_unique_numbers = True
|
|
self.category_1.has_unique_numbers = False
|
|
self.env["res.partner.id_number"].create(
|
|
{
|
|
"name": "123456",
|
|
"category_id": self.category_1.id,
|
|
"partner_id": self.partner_2.id,
|
|
}
|
|
)
|
|
message = (
|
|
"The category Group Id can not be set to use unique numbers, "
|
|
"because it already contains duplicates."
|
|
)
|
|
with self.assertRaisesRegex(ValidationError, message):
|
|
self.category_1.has_unique_numbers = True
|