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
82 lines
2.9 KiB
# Copyright 2021 Tecnativa - Carlos Dauden
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
|
|
from odoo.exceptions import UserError
|
|
from odoo.tests import common
|
|
|
|
|
|
class TestPartnerPricelistSearch(common.SavepointCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.pricelist_1 = cls.env["product.pricelist"].create(
|
|
{"name": "Test pricelist 1"}
|
|
)
|
|
cls.pricelist_2 = cls.env["product.pricelist"].create(
|
|
{"name": "Test pricelist 2"}
|
|
)
|
|
cls.customer_1 = cls.env["res.partner"].create(
|
|
{"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1}
|
|
)
|
|
cls.customer_2 = cls.env["res.partner"].create(
|
|
{"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2}
|
|
)
|
|
cls.partner_obj = cls.env["res.partner"]
|
|
|
|
def test_partner_pricelist_search_equal(self):
|
|
"""Test search '='"""
|
|
partners = self.partner_obj.search(
|
|
[("property_product_pricelist", "=", self.pricelist_1.id)]
|
|
)
|
|
self.assertEqual(partners, self.customer_1)
|
|
|
|
def test_partner_pricelist_search_in(self):
|
|
"""Test search 'in'"""
|
|
partners = self.partner_obj.search(
|
|
[
|
|
(
|
|
"property_product_pricelist",
|
|
"in",
|
|
(self.pricelist_1 | self.pricelist_2).ids,
|
|
)
|
|
]
|
|
)
|
|
self.assertIn(self.customer_1, partners)
|
|
self.assertIn(self.customer_2, partners)
|
|
|
|
def test_partner_pricelist_search_not_equal(self):
|
|
"""Test search 'not equal'"""
|
|
partners = self.partner_obj.search(
|
|
[("property_product_pricelist", "!=", self.pricelist_1.id)]
|
|
)
|
|
self.assertNotIn(self.customer_1, partners)
|
|
self.assertIn(self.customer_2, partners)
|
|
|
|
def test_partner_pricelist_search_not_in(self):
|
|
"""Test search 'not in'"""
|
|
partners = self.partner_obj.search(
|
|
[
|
|
(
|
|
"property_product_pricelist",
|
|
"not in",
|
|
(self.pricelist_1 | self.pricelist_2).ids,
|
|
)
|
|
]
|
|
)
|
|
self.assertNotIn(self.customer_1, partners)
|
|
self.assertNotIn(self.customer_2, partners)
|
|
|
|
def test_partner_pricelist_search_not_implemented(self):
|
|
"""Test search not implemented"""
|
|
with self.assertRaises(UserError):
|
|
self.partner_obj.search(
|
|
[("property_product_pricelist", "ilike", "pricelist xx")]
|
|
)
|
|
|
|
def test_show_pricelist_partners(self):
|
|
res = self.pricelist_1.show_pricelist_partners()
|
|
self.assertEqual(self.partner_obj.search(res["domain"]), self.customer_1)
|
|
res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners()
|
|
self.assertEqual(
|
|
self.partner_obj.search(res["domain"]), (self.customer_1 | self.customer_2)
|
|
)
|