fix: fix tests for PromptEvent refactor

This commit is contained in:
hyper 2026-04-02 19:27:36 +08:00
parent c886e904a8
commit 5f812a3478
2 changed files with 37 additions and 20 deletions

View File

@ -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);

View File

@ -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');