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.
105 lines
3.5 KiB
105 lines
3.5 KiB
# -*- coding: utf-8 -*-
|
|
|
|
import datetime as dt
|
|
from openerp.tests.common import TransactionCase
|
|
|
|
_datetimes = map(
|
|
lambda d: d.strftime("%Y-%m-%d %H:%M:%S"),
|
|
(dt.datetime.now() - dt.timedelta(days=d) for d in range(0, 24, 2)),
|
|
)
|
|
|
|
_quantities = [
|
|
0.64,
|
|
6.45,
|
|
9.65,
|
|
1.76,
|
|
9.14,
|
|
3.99,
|
|
6.92,
|
|
2.25,
|
|
6.91,
|
|
1.44,
|
|
6.52,
|
|
1.44,
|
|
]
|
|
|
|
|
|
class TestProductTemplate(TransactionCase):
|
|
def setUp(self, *args, **kwargs):
|
|
result = super(TestProductTemplate, self).setUp(*args, **kwargs)
|
|
|
|
test_product_template = self.env["product.template"].create(
|
|
{
|
|
"name": "test product template",
|
|
"calculation_range": 14,
|
|
"consumption_calculation_method": "sales_history",
|
|
"product_template_id": 0,
|
|
}
|
|
)
|
|
|
|
pid = (
|
|
self.env["product.product"]
|
|
.search([("product_tmpl_id", "=", test_product_template.id)])
|
|
.ids
|
|
).pop()
|
|
|
|
for date, qty in zip(_datetimes, _quantities):
|
|
(
|
|
self.env["pos.order.line"].create(
|
|
{"create_date": date, "qty": qty, "product_id": pid}
|
|
)
|
|
)
|
|
|
|
def _product_available(*args, **kwargs):
|
|
products = self.env["product.product"].search(
|
|
[("product_tmpl_id", "=", test_product_template.id)]
|
|
)
|
|
mock_data = {
|
|
"qty_available": 53.2,
|
|
"incoming_qty": 14,
|
|
"outgoing_qty": 4.1,
|
|
"virtual_available": 53.2 + 14 - 4.1,
|
|
}
|
|
return {pid: mock_data for pid in products.ids}
|
|
|
|
# mock area fixme
|
|
# ProductTemplate._product_available = _product_available
|
|
# ProductProduct._product_available = _product_available
|
|
# Order = namedtuple('Order', ['id', 'state'])
|
|
# PosOrderLine.order_id = Order('1', 'done')
|
|
|
|
test_product_template._compute_total_consumption()
|
|
self.product_template_id = test_product_template.id
|
|
|
|
return result
|
|
|
|
def test_create(self):
|
|
"""Create a simple product template"""
|
|
Template = self.env["product.template"]
|
|
product = Template.create({"name": "Test create product"})
|
|
self.assertEqual(product.name, "Test create product")
|
|
|
|
def test_compute_average_daily_consumption(self):
|
|
"""Test computed field average_daily_consumption"""
|
|
ProductTemplate = self.env["product.template"]
|
|
product_template = ProductTemplate.browse(self.product_template_id)
|
|
|
|
computed_value = product_template.average_consumption
|
|
expected_value = 4.08
|
|
self.assertAlmostEqual(computed_value, expected_value, 7)
|
|
|
|
def test_compute_total_consumption(self):
|
|
"""Test total consumption was computed in setup"""
|
|
ProductTemplate = self.env["product.template"]
|
|
product_template = ProductTemplate.browse(self.product_template_id)
|
|
computed_value = product_template.total_consumption
|
|
expected_value = 57.11
|
|
self.assertAlmostEqual(computed_value, expected_value)
|
|
|
|
# def test_compute_estimated_stock_coverage(self): fixme
|
|
# """Test computed field estimated_stock_coverage"""
|
|
# ProductTemplate = self.env['product.template']
|
|
# product_template = ProductTemplate.browse(self.product_template_id)
|
|
# computed_value = product_template.estimated_stock_coverage
|
|
# expected_value = 13.04
|
|
# self.assertAlmostEqual(computed_value, expected_value)
|