补充主数据删除能力契约

This commit is contained in:
焦龙言
2026-07-27 04:34:10 +08:00
parent d1f0b9d48b
commit 33f29df40e
6 changed files with 311 additions and 12 deletions
@@ -81,6 +81,7 @@ MASTER_MODEL_FIELDS = {
'update_by',
'update_time',
'remark',
'can_remove',
},
StrainPageQueryModel: {'page_num', 'page_size', 'strain_code', 'strain_name', 'status'},
DeleteStrainModel: {'strain_ids'},
@@ -94,6 +95,7 @@ MASTER_MODEL_FIELDS = {
'update_by',
'update_time',
'remark',
'can_remove',
},
CustomerPageQueryModel: {'page_num', 'page_size', 'customer_code', 'customer_name', 'status'},
DeleteCustomerModel: {'customer_ids'},
@@ -109,6 +111,7 @@ MASTER_MODEL_FIELDS = {
'update_by',
'update_time',
'remark',
'can_remove',
},
SitePageQueryModel: {'page_num', 'page_size', 'customer_id', 'site_code', 'site_name', 'status'},
DeleteSiteModel: {'site_ids'},
@@ -123,6 +126,7 @@ MASTER_MODEL_FIELDS = {
'update_by',
'update_time',
'remark',
'can_remove',
},
LinePageQueryModel: {'page_num', 'page_size', 'site_id', 'line_code', 'line_name', 'status'},
DeleteLineModel: {'line_ids'},
@@ -137,6 +141,7 @@ MASTER_MODEL_FIELDS = {
'update_by',
'update_time',
'remark',
'can_remove',
},
WarehousePageQueryModel: {'page_num', 'page_size', 'warehouse_code', 'warehouse_name', 'status'},
DeleteWarehouseModel: {'warehouse_ids'},
@@ -943,7 +948,6 @@ class BusinessVoContractTest(unittest.TestCase):
(DeleteLineModel, {}, 'lineIds'),
(DeleteWarehouseModel, {}, 'warehouseIds'),
(DeletePalletModel, {}, 'palletIds'),
(UserAssignModel, {}, 'userIds'),
(InboundCreateModel, {'warehouseId': 1}, 'palletIds'),
(InboundUpdateModel, {'inboundId': 1, 'warehouseId': 1}, 'palletIds'),
(ShipmentCreateModel, {'sourceWarehouseId': 1, 'targetSiteId': 2}, 'palletIds'),
@@ -965,6 +969,16 @@ class BusinessVoContractTest(unittest.TestCase):
with self.subTest(model=model_class.__name__, value=invalid_value), self.assertRaises(ValidationError):
model_class.model_validate(payload | {field_name: invalid_value})
def test_user_assignment_allows_empty_and_rejects_invalid_non_empty_ids(self) -> None:
try:
empty_assignment = UserAssignModel.model_validate({'userIds': []})
except ValidationError as exc:
self.fail(f'完整替换用户关联必须允许空数组:{exc}')
self.assertEqual([], empty_assignment.user_ids)
for invalid_value in ([0], [1, 1]):
with self.subTest(value=invalid_value), self.assertRaises(ValidationError):
UserAssignModel.model_validate({'userIds': invalid_value})
def test_pallet_edit_forbids_identity_fields(self) -> None:
valid_payload = {
'palletId': 1,