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.

75 lines
2.7 KiB

  1. # Copyright 2021 Patrick Wilson <pwilson@opensourceintegrators.com>
  2. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
  3. from odoo.exceptions import ValidationError
  4. from odoo.tests import common, tagged
  5. @tagged("-at_install", "post_install")
  6. class TestPartnerTierValidation(common.SavepointCase):
  7. @classmethod
  8. def setUpClass(cls):
  9. super().setUpClass()
  10. # Get res partner model
  11. cls.partner_model = cls.env.ref("base.model_res_partner")
  12. # Create users
  13. group_ids = cls.env.ref("base.group_system").ids
  14. group_ids.append(cls.env.ref("base.group_partner_manager").id)
  15. cls.test_user_1 = cls.env["res.users"].create(
  16. {
  17. "name": "John",
  18. "login": "test1",
  19. "groups_id": [(6, 0, group_ids)],
  20. "email": "test@example.com",
  21. }
  22. )
  23. # Create tier definition: example where only Company needs validation
  24. cls.TierDefinition = cls.env["tier.definition"]
  25. cls.TierDefinition.create(
  26. {
  27. "model_id": cls.partner_model.id,
  28. "review_type": "individual",
  29. "reviewer_id": cls.test_user_1.id,
  30. "definition_domain": "[('is_company','=',True)]",
  31. }
  32. )
  33. def test_tier_validation_model_name(self):
  34. self.assertIn(
  35. "res.partner", self.TierDefinition._get_tier_validation_model_names()
  36. )
  37. def test_validation_res_partner(self):
  38. """
  39. Case where new Contact requires validation
  40. """
  41. contact = self.env["res.partner"].create(
  42. {"name": "Company for test", "company_type": "company"}
  43. )
  44. # Since contact need validation, it should be inactive
  45. self.assertEqual(contact.state, "draft")
  46. # Assert an error shows if trying to make it active
  47. with self.assertRaises(ValidationError):
  48. contact.write({"state": "confirmed"})
  49. # Request and validate partner
  50. contact.request_validation()
  51. contact.with_user(self.test_user_1).validate_tier()
  52. contact.with_user(self.test_user_1).write({"state": "confirmed"})
  53. self.assertEqual(contact.state, "confirmed")
  54. # Change company type to retrigger validation
  55. contact.write({"company_type": "person", "is_company": False})
  56. self.assertEqual(contact.state, "draft")
  57. def test_no_validation_res_partner(self):
  58. """
  59. Case where new Contact does not require validation
  60. """
  61. contact = self.env["res.partner"].create(
  62. {"name": "Person for test", "company_type": "person"}
  63. )
  64. self.assertEqual(contact.state, "confirmed")