"""包材确认下单数量回归测试。""" 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()