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.

57 lines
2.3 KiB

  1. # Copyright 2017 Tecnativa - Vicent Cubells
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo.exceptions import ValidationError
  4. from odoo.tests import common
  5. class TestResPartnerRefUnique(common.SavepointCase):
  6. @classmethod
  7. def setUpClass(cls):
  8. super(TestResPartnerRefUnique, cls).setUpClass()
  9. cls.company = cls.env.ref("base.main_company")
  10. cls.partner_obj = cls.env["res.partner"]
  11. cls.partner1 = cls.partner_obj.create({"name": "Partner1",})
  12. cls.partner2 = cls.partner_obj.create({"name": "Partner2",})
  13. def test_check_ref_company(self):
  14. # Test can create/modify partners with same ref
  15. self.company.partner_ref_unique = "none"
  16. self.partner1.ref = "same_ref"
  17. self.partner2.ref = "same_ref"
  18. self.assertEqual(self.partner1.ref, self.partner2.ref)
  19. # Here there shouldn't be any problem
  20. self.partner_obj.create(
  21. {"name": "other", "ref": "same_ref",}
  22. )
  23. self.partner2.ref = False
  24. with self.assertRaises(ValidationError):
  25. self.company.partner_ref_unique = "all"
  26. def test_check_ref(self):
  27. self.partner1.ref = "same_ref"
  28. # Test can't create/modify partner with same ref
  29. self.company.partner_ref_unique = "all"
  30. with self.assertRaises(ValidationError):
  31. self.partner2.ref = "same_ref"
  32. with self.assertRaises(ValidationError):
  33. self.partner_obj.create(
  34. {"name": "other", "ref": "same_ref",}
  35. )
  36. # Test can't create/modify companies with same ref
  37. self.company.partner_ref_unique = "companies"
  38. self.partner2.ref = "same_ref"
  39. self.assertEqual(self.partner1.ref, self.partner2.ref)
  40. self.partner2.ref = False
  41. self.partner1.is_company = True
  42. self.partner2.is_company = True
  43. with self.assertRaises(ValidationError):
  44. self.partner2.ref = "same_ref"
  45. with self.assertRaises(ValidationError):
  46. self.partner_obj.create(
  47. {"is_company": True, "name": "other", "ref": "same_ref",}
  48. )
  49. # Here there shouldn't be any problem
  50. self.partner_obj.create(
  51. {"is_company": False, "name": "other", "ref": "same_ref",}
  52. )