dy-dashboard/tests/test_packaging_order_quantity.py
2026-10-28 11:14:17 +08:00

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()