格式:整理主数据批次代码

This commit is contained in:
焦龙言
2026-09-22 18:32:53 +08:00
parent b6f606d9f2
commit 46eff756de
4 changed files with 17 additions and 38 deletions
@@ -379,7 +379,9 @@ class MasterDao:
return await cls._find(db, BizWarehouse, BizWarehouse.warehouse_code, warehouse_code) return await cls._find(db, BizWarehouse, BizWarehouse.warehouse_code, warehouse_code)
@classmethod @classmethod
async def add_warehouse(cls, db: AsyncSession, warehouse: WarehouseModel, test_batch_id: int | None) -> BizWarehouse: async def add_warehouse(
cls, db: AsyncSession, warehouse: WarehouseModel, test_batch_id: int | None
) -> BizWarehouse:
return await cls._add(db, BizWarehouse, 'warehouse_id', warehouse, test_batch_id) return await cls._add(db, BizWarehouse, 'warehouse_id', warehouse, test_batch_id)
@classmethod @classmethod
@@ -203,9 +203,7 @@ class PalletService:
assert_record_in_scope(record, scope, _ASSIGNMENT_LABELS[resource]) assert_record_in_scope(record, scope, _ASSIGNMENT_LABELS[resource])
users = await MasterDao.list_assignable_users(db) users = await MasterDao.list_assignable_users(db)
assigned_user_ids = set( assigned_user_ids = set(await getattr(MasterDao, f'list_{resource}_assigned_user_ids')(db, resource_id, scope))
await getattr(MasterDao, f'list_{resource}_assigned_user_ids')(db, resource_id, scope)
)
return [ return [
BusinessUserOptionModel( BusinessUserOptionModel(
user_id=user.user_id, user_id=user.user_id,
@@ -378,9 +378,7 @@ class TestMasterBatchScopeService(unittest.IsolatedAsyncioTestCase):
for resource, model in make_models().items(): for resource, model in make_models().items():
events: list[str] = [] events: list[str] = []
lock_batch = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('lock-batch')) lock_batch = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('lock-batch'))
find_duplicate = AsyncMock( find_duplicate = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('find-duplicate'))
side_effect=lambda *_args, _events=events: _events.append('find-duplicate')
)
add_record = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('add-record')) add_record = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('add-record'))
parent_method = None parent_method = None
parent_lookup = None parent_lookup = None
@@ -390,18 +388,13 @@ class TestMasterBatchScopeService(unittest.IsolatedAsyncioTestCase):
parent_method = 'get_site' parent_method = 'get_site'
with self.subTest(resource=resource), ExitStack() as stack: with self.subTest(resource=resource), ExitStack() as stack:
self.db.reset_mock() self.db.reset_mock()
stack.enter_context( stack.enter_context(patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch))
patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch) stack.enter_context(patch.object(MasterDao, f'find_{resource}_by_code', new=find_duplicate))
)
stack.enter_context(
patch.object(MasterDao, f'find_{resource}_by_code', new=find_duplicate)
)
stack.enter_context(patch.object(MasterDao, f'add_{resource}', new=add_record)) stack.enter_context(patch.object(MasterDao, f'add_{resource}', new=add_record))
if parent_method is not None: if parent_method is not None:
parent_lookup = AsyncMock( parent_lookup = AsyncMock(
side_effect=lambda *_args, _events=events: ( side_effect=lambda *_args, _events=events: (
_events.append('get-parent') _events.append('get-parent') or SimpleNamespace(status='0', test_batch_id=9)
or SimpleNamespace(status='0', test_batch_id=9)
) )
) )
stack.enter_context(patch.object(MasterDao, parent_method, new=parent_lookup)) stack.enter_context(patch.object(MasterDao, parent_method, new=parent_lookup))
@@ -430,14 +423,10 @@ class TestMasterBatchScopeService(unittest.IsolatedAsyncioTestCase):
_events.append('get-current') or _current _events.append('get-current') or _current
) )
) )
update_record = AsyncMock( update_record = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('update-record'))
side_effect=lambda *_args, _events=events: _events.append('update-record')
)
with self.subTest(resource=resource), ExitStack() as stack: with self.subTest(resource=resource), ExitStack() as stack:
self.db.reset_mock() self.db.reset_mock()
stack.enter_context( stack.enter_context(patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch))
patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch)
)
stack.enter_context(patch.object(MasterDao, f'get_{resource}', new=get_current)) stack.enter_context(patch.object(MasterDao, f'get_{resource}', new=get_current))
stack.enter_context( stack.enter_context(
patch.object(MasterDao, f'find_{resource}_by_code', new=AsyncMock(return_value=current)) patch.object(MasterDao, f'find_{resource}_by_code', new=AsyncMock(return_value=current))
@@ -528,16 +517,12 @@ class TestMasterBatchScopeService(unittest.IsolatedAsyncioTestCase):
) )
for resource, parent_method, scope, parent_batch_id in cases: for resource, parent_method, scope, parent_batch_id in cases:
with self.subTest(resource=resource, scope=scope, parent_batch_id=parent_batch_id), ExitStack() as stack: with self.subTest(resource=resource, scope=scope, parent_batch_id=parent_batch_id), ExitStack() as stack:
stack.enter_context( stack.enter_context(patch.object(TestBatchAccessService, 'lock_active_batch', new=AsyncMock()))
patch.object(TestBatchAccessService, 'lock_active_batch', new=AsyncMock())
)
stack.enter_context( stack.enter_context(
patch.object( patch.object(
MasterDao, MasterDao,
parent_method, parent_method,
new=AsyncMock( new=AsyncMock(return_value=SimpleNamespace(status='0', test_batch_id=parent_batch_id)),
return_value=SimpleNamespace(status='0', test_batch_id=parent_batch_id)
),
) )
) )
stack.enter_context( stack.enter_context(
@@ -609,9 +594,7 @@ class TestMasterBatchScopeService(unittest.IsolatedAsyncioTestCase):
patch.object( patch.object(
MasterDao, MasterDao,
'get_strain', 'get_strain',
new=AsyncMock( new=AsyncMock(return_value=SimpleNamespace(strain_id=7, test_batch_id=None)),
return_value=SimpleNamespace(strain_id=7, test_batch_id=None)
),
) )
) )
stack.enter_context( stack.enter_context(
@@ -873,6 +856,7 @@ class TestMasterDao(unittest.IsolatedAsyncioTestCase):
self.assertNotIn('create_time', update_sql) self.assertNotIn('create_time', update_sql)
self.db.commit.assert_not_awaited() self.db.commit.assert_not_awaited()
class TestMasterDaoBatchScope(unittest.IsolatedAsyncioTestCase): class TestMasterDaoBatchScope(unittest.IsolatedAsyncioTestCase):
TABLES = { TABLES = {
'strain': ('biz_strain', 'strain_id'), 'strain': ('biz_strain', 'strain_id'),
@@ -1106,16 +1106,11 @@ class TestPalletBatchScopeService(unittest.IsolatedAsyncioTestCase):
lock_batch = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('lock-batch')) lock_batch = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('lock-batch'))
get_resource = AsyncMock( get_resource = AsyncMock(
side_effect=lambda *_args, _events=events, **_kwargs: ( side_effect=lambda *_args, _events=events, **_kwargs: (
_events.append('get-resource') _events.append('get-resource') or SimpleNamespace(test_batch_id=9)
or SimpleNamespace(test_batch_id=9)
) )
) )
list_users = AsyncMock( list_users = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('list-users') or [])
side_effect=lambda *_args, _events=events: _events.append('list-users') or [] replace_users = AsyncMock(side_effect=lambda *_args, _events=events: _events.append('replace-users'))
)
replace_users = AsyncMock(
side_effect=lambda *_args, _events=events: _events.append('replace-users')
)
with ( with (
self.subTest(resource=resource, operation='write'), self.subTest(resource=resource, operation='write'),
patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch), patch.object(TestBatchAccessService, 'lock_active_batch', new=lock_batch),