From 5f812a3478dce5143b6f281fad120e47b0bb316a Mon Sep 17 00:00:00 2001 From: hyper Date: Thu, 2 Apr 2026 19:27:36 +0800 Subject: [PATCH] fix: fix tests for PromptEvent refactor --- tests/samples/boop.test.ts | 21 +++++++++++------- tests/samples/tic-tac-toe.test.ts | 36 ++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/tests/samples/boop.test.ts b/tests/samples/boop.test.ts index 41a32ad..e2b2ca7 100644 --- a/tests/samples/boop.test.ts +++ b/tests/samples/boop.test.ts @@ -498,8 +498,9 @@ describe('Boop - game flow', () => { const runPromise = ctx.commands.run<{winner: WinnerType}>('turn white'); const promptEvent1 = await promptPromise; + // 没有验证器,tryCommit 返回 null,但游戏逻辑会 continue 并重新 prompt const error1 = promptEvent1.tryCommit({ name: 'play', params: ['black', 2, 2], options: {}, flags: {} }); - expect(error1).not.toBeNull(); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); @@ -523,7 +524,7 @@ describe('Boop - game flow', () => { const promptEvent1 = await promptPromise; const error1 = promptEvent1.tryCommit({ name: 'play', params: ['white', 2, 2], options: {}, flags: {} }); - expect(error1).not.toBeNull(); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); @@ -549,7 +550,7 @@ describe('Boop - game flow', () => { const promptEvent1 = await promptPromise; const error1 = promptEvent1.tryCommit({ name: 'play', params: ['white', 0, 0], options: {}, flags: {} }); - expect(error1).not.toBeNull(); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); @@ -567,7 +568,8 @@ describe('Boop - game flow', () => { let promptPromise = waitForPrompt(ctx); let runPromise = ctx.commands.run<{winner: WinnerType}>('turn white'); let prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['white', 3, 3], options: {}, flags: {} }); + const error1 = prompt.tryCommit({ name: 'play', params: ['white', 3, 3], options: {}, flags: {} }); + expect(error1).toBeNull(); let result = await runPromise; expect(result.success).toBe(true); expect(getParts(state).length).toBe(1); @@ -575,7 +577,8 @@ describe('Boop - game flow', () => { promptPromise = waitForPrompt(ctx); runPromise = ctx.commands.run<{winner: WinnerType}>('turn black'); prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['black', 2, 2], options: {}, flags: {} }); + const error2 = prompt.tryCommit({ name: 'play', params: ['black', 2, 2], options: {}, flags: {} }); + expect(error2).toBeNull(); result = await runPromise; expect(result.success).toBe(true); expect(getParts(state).length).toBe(2); @@ -616,7 +619,8 @@ describe('Boop - game flow', () => { const runPromise = ctx.commands.run<{winner: WinnerType}>('turn white'); const promptEvent = await promptPromise; - promptEvent.resolve({ name: 'play', params: ['white', 2, 2, 'cat'], options: {}, flags: {} }); + const error = promptEvent.tryCommit({ name: 'play', params: ['white', 2, 2, 'cat'], options: {}, flags: {} }); + expect(error).toBeNull(); const result = await runPromise; expect(result.success).toBe(true); @@ -638,12 +642,13 @@ describe('Boop - game flow', () => { const runPromise = ctx.commands.run<{winner: WinnerType}>('turn white'); const promptEvent1 = await promptPromise; - promptEvent1.resolve({ name: 'play', params: ['white', 0, 0, 'cat'], options: {}, flags: {} }); + const error1 = promptEvent1.tryCommit({ name: 'play', params: ['white', 0, 0, 'cat'], options: {}, flags: {} }); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); - promptEvent2.reject(new Error('test end')); + promptEvent2.cancel('test end'); const result = await runPromise; expect(result.success).toBe(false); diff --git a/tests/samples/tic-tac-toe.test.ts b/tests/samples/tic-tac-toe.test.ts index 3fb509b..9083cd0 100644 --- a/tests/samples/tic-tac-toe.test.ts +++ b/tests/samples/tic-tac-toe.test.ts @@ -207,7 +207,7 @@ describe('TicTacToe - game flow', () => { expect(promptEvent).not.toBeNull(); expect(promptEvent.schema.name).toBe('play'); - promptEvent.reject(new Error('test end')); + promptEvent.cancel('test end'); const result = await runPromise; expect(result.success).toBe(false); @@ -223,7 +223,8 @@ describe('TicTacToe - game flow', () => { expect(promptEvent).not.toBeNull(); expect(promptEvent.schema.name).toBe('play'); - promptEvent.resolve({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + const error = promptEvent.tryCommit({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + expect(error).toBeNull(); const result = await runPromise; expect(result.success).toBe(true); @@ -239,12 +240,15 @@ describe('TicTacToe - game flow', () => { const runPromise = ctx.commands.run<{winner: WinnerType}>('turn X 1'); const promptEvent1 = await promptPromise; - promptEvent1.resolve({ name: 'play', params: ['O', 1, 1], options: {}, flags: {} }); + // 没有验证器,tryCommit 返回 null,但游戏逻辑会 continue 并重新 prompt + const error1 = promptEvent1.tryCommit({ name: 'play', params: ['O', 1, 1], options: {}, flags: {} }); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); - promptEvent2.resolve({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + const error2 = promptEvent2.tryCommit({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + expect(error2).toBeNull(); const result = await runPromise; expect(result.success).toBe(true); @@ -261,12 +265,14 @@ describe('TicTacToe - game flow', () => { const runPromise = ctx.commands.run<{winner: WinnerType}>('turn X 1'); const promptEvent1 = await promptPromise; - promptEvent1.resolve({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + const error1 = promptEvent1.tryCommit({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + expect(error1).toBeNull(); const promptEvent2 = await waitForPrompt(ctx); expect(promptEvent2).not.toBeNull(); - promptEvent2.resolve({ name: 'play', params: ['X', 0, 0], options: {}, flags: {} }); + const error2 = promptEvent2.tryCommit({ name: 'play', params: ['X', 0, 0], options: {}, flags: {} }); + expect(error2).toBeNull(); const result = await runPromise; expect(result.success).toBe(true); @@ -279,7 +285,8 @@ describe('TicTacToe - game flow', () => { let promptPromise = waitForPrompt(ctx); let runPromise = ctx.commands.run<{winner: WinnerType}>('turn X 1'); let prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['X', 0, 0], options: {}, flags: {} }); + const error1 = prompt.tryCommit({ name: 'play', params: ['X', 0, 0], options: {}, flags: {} }); + expect(error1).toBeNull(); let result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBeNull(); @@ -287,7 +294,8 @@ describe('TicTacToe - game flow', () => { promptPromise = waitForPrompt(ctx); runPromise = ctx.commands.run('turn O 2'); prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['O', 0, 1], options: {}, flags: {} }); + const error2 = prompt.tryCommit({ name: 'play', params: ['O', 0, 1], options: {}, flags: {} }); + expect(error2).toBeNull(); result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBeNull(); @@ -295,7 +303,8 @@ describe('TicTacToe - game flow', () => { promptPromise = waitForPrompt(ctx); runPromise = ctx.commands.run('turn X 3'); prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['X', 1, 0], options: {}, flags: {} }); + const error3 = prompt.tryCommit({ name: 'play', params: ['X', 1, 0], options: {}, flags: {} }); + expect(error3).toBeNull(); result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBeNull(); @@ -303,7 +312,8 @@ describe('TicTacToe - game flow', () => { promptPromise = waitForPrompt(ctx); runPromise = ctx.commands.run('turn O 4'); prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['O', 0, 2], options: {}, flags: {} }); + const error4 = prompt.tryCommit({ name: 'play', params: ['O', 0, 2], options: {}, flags: {} }); + expect(error4).toBeNull(); result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBeNull(); @@ -311,7 +321,8 @@ describe('TicTacToe - game flow', () => { promptPromise = waitForPrompt(ctx); runPromise = ctx.commands.run('turn X 5'); prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['X', 2, 0], options: {}, flags: {} }); + const error5 = prompt.tryCommit({ name: 'play', params: ['X', 2, 0], options: {}, flags: {} }); + expect(error5).toBeNull(); result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBe('X'); @@ -341,7 +352,8 @@ describe('TicTacToe - game flow', () => { const promptPromise = waitForPrompt(ctx); const runPromise = ctx.commands.run<{winner: WinnerType}>('turn X 9'); const prompt = await promptPromise; - prompt.resolve({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + const error = prompt.tryCommit({ name: 'play', params: ['X', 1, 1], options: {}, flags: {} }); + expect(error).toBeNull(); const result = await runPromise; expect(result.success).toBe(true); if (result.success) expect(result.result.winner).toBe('draw');