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
+13 -8
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);
+24 -12
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');