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.

82 lines
2.9 KiB

  1. # Copyright 2021 Tecnativa - Carlos Dauden
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
  3. from odoo.tests import common
  4. class TestPartnerPricelistSearch(common.SavepointCase):
  5. @classmethod
  6. def setUpClass(cls):
  7. super().setUpClass()
  8. cls.pricelist_1 = cls.env["product.pricelist"].create(
  9. {"name": "Test pricelist 1"}
  10. )
  11. cls.pricelist_2 = cls.env["product.pricelist"].create(
  12. {"name": "Test pricelist 2"}
  13. )
  14. cls.customer_1 = cls.env["res.partner"].create(
  15. {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1}
  16. )
  17. cls.customer_2 = cls.env["res.partner"].create(
  18. {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2}
  19. )
  20. cls.partner_obj = cls.env["res.partner"]
  21. def test_partner_pricelist_search_equal(self):
  22. """Test search '='"""
  23. partners = self.partner_obj.search(
  24. [("property_product_pricelist", "=", self.pricelist_1.id)]
  25. )
  26. self.assertEqual(partners, self.customer_1)
  27. def test_partner_pricelist_search_in(self):
  28. """Test search 'in'"""
  29. partners = self.partner_obj.search(
  30. [
  31. (
  32. "property_product_pricelist",
  33. "in",
  34. (self.pricelist_1 | self.pricelist_2).ids,
  35. )
  36. ]
  37. )
  38. self.assertIn(self.customer_1, partners)
  39. self.assertIn(self.customer_2, partners)
  40. def test_partner_pricelist_search_not_equal(self):
  41. """Test search 'not equal'"""
  42. partners = self.partner_obj.search(
  43. [("property_product_pricelist", "!=", self.pricelist_1.id)]
  44. )
  45. self.assertNotIn(self.customer_1, partners)
  46. self.assertIn(self.customer_2, partners)
  47. def test_partner_pricelist_search_not_in(self):
  48. """Test search 'not in'"""
  49. partners = self.partner_obj.search(
  50. [
  51. (
  52. "property_product_pricelist",
  53. "not in",
  54. (self.pricelist_1 | self.pricelist_2).ids,
  55. )
  56. ]
  57. )
  58. self.assertNotIn(self.customer_1, partners)
  59. self.assertNotIn(self.customer_2, partners)
  60. def test_partner_pricelist_search_ilike(self):
  61. """Test search 'ilike'"""
  62. partners = self.partner_obj.search(
  63. [("property_product_pricelist", "ilike", "Test pricelist 1")]
  64. )
  65. self.assertIn(self.customer_1, partners)
  66. self.assertNotIn(self.customer_2, partners)
  67. def test_show_pricelist_partners(self):
  68. res = self.pricelist_1.show_pricelist_partners()
  69. self.assertEqual(self.partner_obj.search(res["domain"]), self.customer_1)
  70. res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners()
  71. self.assertEqual(
  72. self.partner_obj.search(res["domain"]), (self.customer_1 | self.customer_2)
  73. )