From b5604afd3d7ecb4b79f9b5348391a0fe11dae02a Mon Sep 17 00:00:00 2001 From: shaw Date: Tue, 7 Jul 2026 20:13:28 +0800 Subject: [PATCH] =?UTF-8?q?test(batch-image):=20=E9=9B=86=E6=88=90?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=80=82=E9=85=8D=20ReplaceBatchImageItemsFo?= =?UTF-8?q?rJob=20=E7=9A=84=20indexing=20=E7=8A=B6=E6=80=81=E5=AE=88?= =?UTF-8?q?=E5=8D=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 守卫要求 job 处于 indexing 状态才允许重建 item 表;原测试在 created 状态下直接调用被 409 拒绝。改为先断言非 indexing 状态的冲突行为, 再经 created→submitted→indexing 合法链推进后执行原有断言。 --- .../repository/batch_image_repo_integration_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/internal/repository/batch_image_repo_integration_test.go b/backend/internal/repository/batch_image_repo_integration_test.go index 174e0657e3..df6be4a954 100644 --- a/backend/internal/repository/batch_image_repo_integration_test.go +++ b/backend/internal/repository/batch_image_repo_integration_test.go @@ -208,6 +208,16 @@ func TestBatchImageRepository_ReplaceBatchImageItemsForJob(t *testing.T) { }) require.NoError(t, err) + // 非 indexing 状态不允许重建 item 表:防止锁过期后掉队的 worker + // 重写已完成/已结算 job 的条目。 + err = repo.ReplaceBatchImageItemsForJob(ctx, batchID, []service.CreateBatchImageItemParams{ + {CustomID: "old", Status: service.BatchImageItemStatusSuccess, SourceLineNumber: &lineOne, ImageCount: 1}, + }, service.BatchImageCounts{SuccessCount: 1}) + require.ErrorIs(t, err, service.ErrBatchImageIndexStateConflict) + + require.NoError(t, repo.TransitionBatchImageJobStatus(ctx, batchID, service.BatchImageJobStatusSubmitted, service.BatchImageTransitionOptions{})) + require.NoError(t, repo.TransitionBatchImageJobStatus(ctx, batchID, service.BatchImageJobStatusIndexing, service.BatchImageTransitionOptions{})) + err = repo.ReplaceBatchImageItemsForJob(ctx, batchID, []service.CreateBatchImageItemParams{ {CustomID: "old", Status: service.BatchImageItemStatusSuccess, SourceLineNumber: &lineOne, ImageCount: 1}, }, service.BatchImageCounts{SuccessCount: 1})