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

  1. # Copyright 2021 Camptocamp SA
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
  3. from odoo.exceptions import ValidationError
  4. from odoo.tests.common import SavepointCase
  5. class TestPartnerIdentificationUniqueByCategory(SavepointCase):
  6. @classmethod
  7. def setUpClass(cls):
  8. super().setUpClass()
  9. cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
  10. cls.category_1 = cls.env["res.partner.id_category"].create(
  11. {"code": "UID", "name": "Group Id"}
  12. )
  13. cls.category_2 = cls.env["res.partner.id_category"].create(
  14. {"code": "GID", "name": "User Id"}
  15. )
  16. cls.partner_1 = cls.env.ref("base.res_partner_1")
  17. cls.partner_2 = cls.env.ref("base.res_partner_2")
  18. def test_id_creation(self):
  19. """Check Id unique (or not) validation."""
  20. self.category_1.has_unique_numbers = True
  21. self.env["res.partner.id_number"].create(
  22. {
  23. "name": "123",
  24. "category_id": self.category_1.id,
  25. "partner_id": self.partner_1.id,
  26. }
  27. )
  28. message = (
  29. "The Id 123 in the category Group Id could not be created "
  30. "because it already exists"
  31. )
  32. with self.assertRaisesRegex(ValidationError, message):
  33. self.env["res.partner.id_number"].create(
  34. {
  35. "name": "123",
  36. "category_id": self.category_1.id,
  37. "partner_id": self.partner_2.id,
  38. }
  39. )
  40. # Allow to create same id in an other category
  41. self.env["res.partner.id_number"].create(
  42. {
  43. "name": "123",
  44. "category_id": self.category_2.id,
  45. "partner_id": self.partner_2.id,
  46. }
  47. )
  48. self.category_1.has_unique_numbers = False
  49. self.env["res.partner.id_number"].create(
  50. {
  51. "name": "123",
  52. "category_id": self.category_1.id,
  53. "partner_id": self.partner_2.id,
  54. }
  55. )
  56. def test_category_unique_activation(self):
  57. """Check there is no duplicate when enabling unicity."""
  58. self.env["res.partner.id_number"].create(
  59. {
  60. "name": "123456",
  61. "category_id": self.category_1.id,
  62. "partner_id": self.partner_1.id,
  63. }
  64. )
  65. self.category_1.has_unique_numbers = True
  66. self.category_1.has_unique_numbers = False
  67. self.env["res.partner.id_number"].create(
  68. {
  69. "name": "123456",
  70. "category_id": self.category_1.id,
  71. "partner_id": self.partner_2.id,
  72. }
  73. )
  74. message = (
  75. "The category Group Id can not be set to use unique numbers, "
  76. "because it already contains duplicates."
  77. )
  78. with self.assertRaisesRegex(ValidationError, message):
  79. self.category_1.has_unique_numbers = True