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

75 lines
2.9 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.
import datetime as dt
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
class PurchaseRequestTestCase(PartyCheckReplaceMixin, ModuleTestCase):
'Test Purchase Request module'
module = 'purchase_request'
@with_transaction()
def test_find_best_product_supplier(self):
"Test finding best product supplier"
pool = Pool()
ProductTemplate = pool.get('product.template')
Product = pool.get('product.product')
ProductSupplier = pool.get('purchase.product_supplier')
Party = pool.get('party.party')
UoM = pool.get('product.uom')
PurchaseRequest = pool.get('purchase.request')
Date = pool.get('ir.date')
supplier = Party(name="Supplier")
supplier.save()
company = create_company()
with set_company(company):
unit, = UoM.search([('name', '=', "Unit")])
template = ProductTemplate(name="Product")
template.purchasable = True
template.default_uom = unit
template.purchase_uom = unit
template.save()
product = Product(template=template)
product.save()
product_supplier1 = ProductSupplier(
template=template, party=supplier,
lead_time=dt.timedelta(days=5))
product_supplier1.save()
product_supplier2 = ProductSupplier(
template=template, party=supplier,
lead_time=dt.timedelta(days=2))
product_supplier2.save()
product_supplier3 = ProductSupplier(
template=template, party=supplier,
lead_time=dt.timedelta(days=3))
product_supplier3.save()
today = Date.today()
for date, product_supplier in [
(None, product_supplier1),
(today, product_supplier2),
(today + dt.timedelta(days=1), product_supplier2),
(today + dt.timedelta(days=2), product_supplier2),
(today + dt.timedelta(days=3), product_supplier2),
(today + dt.timedelta(days=4), product_supplier2),
(today + dt.timedelta(days=5), product_supplier1),
(dt.date.max, product_supplier1),
(dt.date.min, product_supplier2),
]:
with self.subTest(date=date):
self.assertEqual(
PurchaseRequest.find_best_product_supplier(
product, date),
product_supplier)
del ModuleTestCase