From e99b9e05cb18f838d1cdc45e7ba700833086a47c Mon Sep 17 00:00:00 2001 From: Jacob Cable Date: Tue, 1 Sep 2026 16:58:53 +0100 Subject: [PATCH] fix(storage-resize-images): treat zero resize outputs as a failed run --- kits/storage-resize-images/src/handlers.ts | 10 ++++---- .../tests/handlers.test.ts | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/kits/storage-resize-images/src/handlers.ts b/kits/storage-resize-images/src/handlers.ts index 5f35dd7591..800ce369e0 100644 --- a/kits/storage-resize-images/src/handlers.ts +++ b/kits/storage-resize-images/src/handlers.ts @@ -153,10 +153,12 @@ export async function generateResizedImageHandler( }, }); - resizeFailed = resizeResults.some( - (result) => - result.status === "rejected" || result.value.success === false - ); + resizeFailed = + resizeResults.length === 0 || + resizeResults.some( + (result) => + result.status === "rejected" || result.value.success === false + ); } const failed = filterErrored || resizeFailed; diff --git a/kits/storage-resize-images/tests/handlers.test.ts b/kits/storage-resize-images/tests/handlers.test.ts index fddbcf54c2..bb7681e46a 100644 --- a/kits/storage-resize-images/tests/handlers.test.ts +++ b/kits/storage-resize-images/tests/handlers.test.ts @@ -310,6 +310,29 @@ describe("generateResizedImageHandler", () => { expect(handleFailedImage).toHaveBeenCalledTimes(1); }); + test("treats zero resize outputs as a failure", async () => { + const ctx = makeCtx(); + mock(resizeImages).mockResolvedValue([]); + + await generateResizedImageHandler(mockObject, ctx, false); + + expect(logs.failed).toHaveBeenCalled(); + expect(handleFailedImage).toHaveBeenCalledTimes(1); + }); + + test("keeps the original under on_success when no resize was produced", async () => { + mock(downloadOriginalFile).mockResolvedValue([ + "/tmp/test.jpg", + { delete: vi.fn() }, + ]); + mock(resizeImages).mockResolvedValue([]); + const ctx = makeCtx({ deleteOriginalFile: DELETE_IMAGE.onSuccess }); + + await generateResizedImageHandler(mockObject, ctx, false); + + expect(deleteRemoteFile).not.toHaveBeenCalled(); + }); + test("deletes the original only after a successful run under on_success", async () => { const remoteFile = { delete: vi.fn() }; mock(downloadOriginalFile).mockResolvedValue(["/tmp/test.jpg", remoteFile]);