From 3b73ba6e05f1dbc4cd8fcb27e5c284540cf15a71 Mon Sep 17 00:00:00 2001 From: gonzaloriestra <14979109+gonzaloriestra@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:20:18 +0000 Subject: [PATCH] [Tests] Add unit tests for flushPromises utility Adds comprehensive unit tests for the `flushPromises` utility in `@shopify/cli-kit`. Covers microtasks, nested microtasks, and macrotasks (setImmediate). --- .../cli-kit/src/public/node/promises.test.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 packages/cli-kit/src/public/node/promises.test.ts diff --git a/packages/cli-kit/src/public/node/promises.test.ts b/packages/cli-kit/src/public/node/promises.test.ts new file mode 100644 index 00000000000..ee736d7f02f --- /dev/null +++ b/packages/cli-kit/src/public/node/promises.test.ts @@ -0,0 +1,54 @@ +import {flushPromises} from './promises.js' +import {describe, expect, test} from 'vitest' + +describe('flushPromises', () => { + test('waits for microtasks to complete', async () => { + // Given + let result = '' + const _promise = Promise.resolve().then(() => { + result += 'microtask' + }) + + // When + await flushPromises() + result += ' flushed' + + // Then + expect(result).toBe('microtask flushed') + }) + + test('waits for multiple nested microtasks', async () => { + // Given + let result = '' + const _promise = Promise.resolve() + .then(() => { + result += '1' + return 'intermediate' + }) + .then(() => { + result += '2' + }) + + // When + await flushPromises() + result += ' flushed' + + // Then + expect(result).toBe('12 flushed') + }) + + test('waits for macrotasks scheduled with setImmediate', async () => { + // Given + let result = '' + setImmediate(() => { + result += 'macrotask' + }) + + // When + await flushPromises() + result += ' flushed' + + // Then + expect(result).toBe('macrotask flushed') + }) +})