修复:强化库存事务并发与日期边界
This commit is contained in:
@@ -569,6 +569,14 @@ WRITE_MODELS = (
|
||||
ReturnConfirmModel,
|
||||
)
|
||||
|
||||
OPERATION_PAGE_QUERY_MODELS = (
|
||||
InboundPageQueryModel,
|
||||
FillingPageQueryModel,
|
||||
ShipmentPageQueryModel,
|
||||
UsagePageQueryModel,
|
||||
ReturnPageQueryModel,
|
||||
)
|
||||
|
||||
PAGE_QUERY_MODELS = (
|
||||
StrainPageQueryModel,
|
||||
CustomerPageQueryModel,
|
||||
@@ -576,11 +584,7 @@ PAGE_QUERY_MODELS = (
|
||||
LinePageQueryModel,
|
||||
WarehousePageQueryModel,
|
||||
PalletPageQueryModel,
|
||||
InboundPageQueryModel,
|
||||
FillingPageQueryModel,
|
||||
ShipmentPageQueryModel,
|
||||
UsagePageQueryModel,
|
||||
ReturnPageQueryModel,
|
||||
*OPERATION_PAGE_QUERY_MODELS,
|
||||
PalletInventoryReportQueryModel,
|
||||
FillingReportQueryModel,
|
||||
ShipmentReportQueryModel,
|
||||
@@ -775,6 +779,36 @@ class BusinessVoContractTest(unittest.TestCase):
|
||||
with self.assertRaises(ValidationError):
|
||||
model_class.model_validate({'pageSize': 0})
|
||||
|
||||
def test_operation_page_query_dates_require_strict_calendar_format(self) -> None:
|
||||
for model_class in OPERATION_PAGE_QUERY_MODELS:
|
||||
with self.subTest(model=model_class.__name__, case='begin-only'):
|
||||
model = model_class.model_validate({'beginTime': '2026-07-01'})
|
||||
self.assertEqual('2026-07-01', model.begin_time)
|
||||
self.assertIsNone(model.end_time)
|
||||
with self.subTest(model=model_class.__name__, case='end-only'):
|
||||
model = model_class.model_validate({'endTime': '2026-07-31'})
|
||||
self.assertIsNone(model.begin_time)
|
||||
self.assertEqual('2026-07-31', model.end_time)
|
||||
for field_name in ('beginTime', 'endTime'):
|
||||
for invalid_date in ('not-a-date', '2026-02-30', '2026-7-01', '2026-07-1'):
|
||||
with (
|
||||
self.subTest(
|
||||
model=model_class.__name__,
|
||||
field=field_name,
|
||||
value=invalid_date,
|
||||
),
|
||||
self.assertRaises(ValidationError),
|
||||
):
|
||||
model_class.model_validate({field_name: invalid_date})
|
||||
|
||||
def test_operation_page_query_date_range_must_not_be_inverted(self) -> None:
|
||||
for model_class in OPERATION_PAGE_QUERY_MODELS:
|
||||
with self.subTest(model=model_class.__name__, case='equal'):
|
||||
model = model_class.model_validate({'beginTime': '2026-07-02', 'endTime': '2026-07-02'})
|
||||
self.assertEqual(model.begin_time, model.end_time)
|
||||
with self.subTest(model=model_class.__name__, case='inverted'), self.assertRaises(ValidationError):
|
||||
model_class.model_validate({'beginTime': '2026-07-03', 'endTime': '2026-07-02'})
|
||||
|
||||
def test_pallet_page_size_is_capped_at_100(self) -> None:
|
||||
self.assertEqual(100, PalletPageQueryModel.model_validate({'pageSize': 100}).page_size)
|
||||
with self.assertRaises(ValidationError):
|
||||
|
||||
Reference in New Issue
Block a user