Files
tradon/modules/carrier/tests/test_module.py
2026-03-14 09:42:12 +00:00

155 lines
5.3 KiB
Python

# 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 decimal import Decimal
from trytond.modules.company.tests import create_company, set_company
from trytond.modules.party.tests import PartyCheckReplaceMixin
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(PartyCheckReplaceMixin, 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