diff --git a/modules/carrier/tests/__init__.py b/modules/carrier/tests/__init__.py index 4effdfa4a2..d492b722eb 100644 --- a/modules/carrier/tests/__init__.py +++ b/modules/carrier/tests/__init__.py @@ -1,2 +1,6 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. + +from .test_module import create_carrier + +__all__ = ['create_carrier'] diff --git a/modules/carrier/tests/test_module.py b/modules/carrier/tests/test_module.py index 08f6a591ad..a55058bf9a 100644 --- a/modules/carrier/tests/test_module.py +++ b/modules/carrier/tests/test_module.py @@ -1,12 +1,153 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from trytond.tests.test_tryton import ModuleTestCase +from decimal import Decimal + +from trytond.modules.company.tests import create_company, set_company +from trytond.pool import Pool +from trytond.tests.test_tryton import ModuleTestCase, with_transaction + + +def create_carrier(list_price=None, cost_price=None): + pool = Pool() + Carrier = pool.get('carrier') + Party = pool.get('party.party') + Product = pool.get('product.product') + ProductTemplate = pool.get('product.template') + UoM = pool.get('product.uom') + + unit, = UoM.search([('name', '=', "Unit")]) + party = Party(name="Carrier") + party.save() + product_template = ProductTemplate( + name="Service", + type='service', + default_uom=unit) + if list_price is not None: + product_template.list_price = list_price + product_template.save() + product = Product(template=product_template) + if cost_price is not None: + product.cost_price = cost_price + product.save() + carrier = Carrier(party=party, carrier_product=product) + carrier.save() + return carrier class CarrierTestCase(ModuleTestCase): 'Test Carrier module' module = 'carrier' + @with_transaction() + def test_carrier_rec_name(self): + "Test carrier record name" + carrier = create_carrier() + self.assertEqual(carrier.rec_name, "Carrier - Service") + + @with_transaction() + def test_carrier_search_rec_name(self): + "Test search carrier by record name" + pool = Pool() + Carrier = pool.get('carrier') + carrier = create_carrier() + + for domain, result in [ + ([('rec_name', 'ilike', "Carrier%")], [carrier]), + ([('rec_name', 'ilike', "%Service")], [carrier]), + ([('rec_name', 'not ilike', "Carrier%")], []), + ([('rec_name', 'not ilike', "%Service")], []), + ]: + with self.subTest(domain=domain): + self.assertEqual(Carrier.search(domain), result) + + @with_transaction() + def test_carrier_sale_price(self): + "Test carrier sale price" + company = create_company() + with set_company(company): + carrier = create_carrier(list_price=Decimal('42.0000')) + self.assertEqual( + carrier.get_sale_price(), + (Decimal('42.0000'), company.currency.id)) + + @with_transaction() + def test_carrier_sale_price_without_list_price(self): + "Test carrier sale price without list price" + company = create_company() + with set_company(company): + carrier = create_carrier() + self.assertEqual(carrier.get_sale_price(), (None, None)) + + @with_transaction() + def test_carrier_sale_price_without_company(self): + "Test carrier sale price without company" + carrier = create_carrier() + self.assertEqual(carrier.get_sale_price(), (None, None)) + + @with_transaction() + def test_carrier_purchase_price(self): + "Test carrier purchase price" + company = create_company() + with set_company(company): + carrier = create_carrier(cost_price=Decimal('42.0000')) + self.assertEqual( + carrier.get_purchase_price(), + (Decimal('42.0000'), company.currency.id)) + + @with_transaction() + def test_carrier_purchase_price_without_cost_price(self): + "Test carrier sale price without cost price" + carrier = create_carrier() + company = create_company() + with set_company(company): + self.assertEqual(carrier.get_purchase_price(), (None, None)) + + @with_transaction() + def test_carrier_purchase_price_without_company(self): + "Test carrier purchase price without company" + carrier = create_carrier() + self.assertEqual(carrier.get_purchase_price(), (None, None)) + + @with_transaction() + def test_carrier_selection(self): + "Test carrier selection" + pool = Pool() + Selection = pool.get('carrier.selection') + Country = pool.get('country.country') + + carrier1 = create_carrier() + carrier2 = create_carrier() + country1 = Country(name="Country 1") + country1.save() + country2 = Country(name="Country 2") + country2.save() + + selection1 = Selection(carrier=carrier1, to_country=country1) + selection1.save() + selection2 = Selection(carrier=carrier2) + selection2.save() + + for pattern, carriers in [ + ({'to_country': country1.id}, [carrier1, carrier2]), + ({}, [carrier1, carrier2]), + ({'to_country': country2.id}, [carrier2]), + ]: + with self.subTest(pattern=pattern): + self.assertEqual(Selection.get_carriers(pattern), carriers) + + @with_transaction() + def test_carrier_selection_wihout_selection(self): + "Test carrier selection without selection" + pool = Pool() + Selection = pool.get('carrier.selection') + + carrier1 = create_carrier() + carrier2 = create_carrier() + carrier2.active = False + carrier2.save() + + self.assertEqual(Selection.get_carriers({}), [carrier1, carrier2]) + del ModuleTestCase