refactor: Part[] -> Record<string, Part>

This commit is contained in:
2026-04-03 17:36:25 +08:00
parent 118007168a
commit 65a3d682b6
9 changed files with 57 additions and 41 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ function waitForPrompt(ctx: ReturnType<typeof createTestContext>['ctx']): Promis
}
function getParts(state: MutableSignal<BoopState>) {
return state.value.pieces;
return Object.values(state.value.pieces);
}
describe('Boop - helper functions', () => {
+6 -6
View File
@@ -163,9 +163,9 @@ describe('TicTacToe - helper functions', () => {
const state = getState(ctx);
placePiece(state, 1, 1, 'X');
expect(state.value.parts.length).toBe(1);
expect(state.value.parts.find(p => p.id === 'piece-X-1')!.position).toEqual([1, 1]);
expect(state.value.parts.find(p => p.id === 'piece-X-1')!.player).toBe('X');
expect(Object.keys(state.value.parts).length).toBe(1);
expect(state.value.parts['piece-X-1']!.position).toEqual([1, 1]);
expect(state.value.parts['piece-X-1']!.player).toBe('X');
});
it('should add piece to board region children', () => {
@@ -183,7 +183,7 @@ describe('TicTacToe - helper functions', () => {
placePiece(state, 0, 0, 'X');
placePiece(state, 0, 1, 'O');
const ids = state.value.parts.map(p => p.id);
const ids = Object.keys(state.value.parts);
expect(new Set(ids).size).toBe(2);
});
});
@@ -229,8 +229,8 @@ describe('TicTacToe - game flow', () => {
const result = await runPromise;
expect(result.success).toBe(true);
if (result.success) expect(result.result.winner).toBeNull();
expect(ctx.state.value.parts.length).toBe(1);
expect(ctx.state.value.parts.find(p => p.id === 'piece-X-1')!.position).toEqual([1, 1]);
expect(Object.keys(ctx.state.value.parts).length).toBe(1);
expect(ctx.state.value.parts['piece-X-1']!.position).toEqual([1, 1]);
});
it('should reject move for wrong player and re-prompt', async () => {