44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
"""包材确认下单数量回归测试。"""
|
|
import unittest
|
|
|
|
from routes.purchase import _resolve_confirm_packaging_qty, _select_confirm_bom
|
|
|
|
|
|
class PackagingOrderQuantityTestCase(unittest.TestCase):
|
|
def test_explicit_actual_quantity_is_not_replaced_by_finished_product_quantity(self):
|
|
self.assertEqual(
|
|
_resolve_confirm_packaging_qty(
|
|
{'actual_quantity': 10000, 'quantity': 1},
|
|
product_actual_qty=5000,
|
|
),
|
|
10000,
|
|
)
|
|
|
|
def test_other_explicit_quantities_are_preserved(self):
|
|
self.assertEqual(
|
|
_resolve_confirm_packaging_qty({'actual_quantity': 8000}, 5000),
|
|
8000,
|
|
)
|
|
self.assertEqual(
|
|
_resolve_confirm_packaging_qty({'actual_quantity': 0, 'quantity': 1}, 5000),
|
|
0,
|
|
)
|
|
|
|
def test_missing_actual_quantity_falls_back_to_bom_usage(self):
|
|
self.assertEqual(
|
|
_resolve_confirm_packaging_qty({'quantity': 1.5}, 5000),
|
|
7500,
|
|
)
|
|
|
|
def test_request_bom_has_highest_priority(self):
|
|
request_bom = [{'material_code': 'request', 'actual_quantity': 10000}]
|
|
saved_bom = [{'material_code': 'saved', 'actual_quantity': 5000}]
|
|
base_bom = [{'material_code': 'base', 'quantity': 1}]
|
|
self.assertIs(_select_confirm_bom(request_bom, saved_bom, base_bom), request_bom)
|
|
self.assertIs(_select_confirm_bom([], saved_bom, base_bom), saved_bom)
|
|
self.assertIs(_select_confirm_bom([], [], base_bom), base_bom)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|