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

86 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.
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
class ProductMeasurementsTestCase(ModuleTestCase):
"Test Product Measurements module"
module = 'product_measurements'
extras = ['product_price_list']
@with_transaction()
def test_price_list_context_formula_volume(self):
"Test price list context formula with volume"
pool = Pool()
Template = pool.get('product.template')
Product = pool.get('product.product')
UoM = pool.get('product.uom')
PriceList = pool.get('product.price_list')
unit, = UoM.search([('name', '=', "Unit")])
cm3, = UoM.search([('name', '=', "Cubic centimeter")])
inch3, = UoM.search([('name', '=', "Cubic inch")])
company = create_company()
with set_company(company):
template = Template(
name="Product", default_uom=unit, products=None,
list_price=Decimal('100'),
volume=2, volume_uom=cm3)
template.save()
product = Product(template=template)
product.save()
price_list = PriceList(
name="List", price='list_price',
lines=[{
'formula': 'unit_price + 5 * volume',
'volume_uom': inch3}])
price_list.save()
self.assertEqual(
price_list.compute(product, 5, unit),
Decimal('100.6102'))
@with_transaction()
def test_price_list_context_formula_weight(self):
"Test price list context formula with weight"
pool = Pool()
Template = pool.get('product.template')
Product = pool.get('product.product')
UoM = pool.get('product.uom')
PriceList = pool.get('product.price_list')
unit, = UoM.search([('name', '=', "Unit")])
gram, = UoM.search([('name', '=', "Gram")])
pound, = UoM.search([('name', '=', "Pound")])
company = create_company()
with set_company(company):
template = Template(
name="Product", default_uom=unit, products=None,
list_price=Decimal('100'),
weight=5, weight_uom=gram)
template.save()
product = Product(template=template)
product.save()
price_list = PriceList(
name="List", price='list_price',
lines=[{
'formula': 'unit_price + 5 * weight',
'weight_uom': pound}])
price_list.save()
self.assertEqual(
price_list.compute(product, 5, unit),
Decimal('100.0551'))
del ModuleTestCase