Skip to content

Commit 3763f01

Browse files
committed
Enhance game state access and improve test setup
- Added getters for selectedSquare, possibleMoves, and renderedState in board.js to facilitate easier access in tests. - Updated game.js to check for possibleMoves as an array before allowing moves. - Refactored test setup in game-flow.test.js and game-moves.test.js to utilize new getters for improved clarity and maintainability.
1 parent 902728d commit 3763f01

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

js/board.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,10 @@ if (typeof module !== 'undefined' && module.exports) {
260260
setSelectedSquare,
261261
clearSelectedSquare,
262262
setPossibleMoves,
263-
clearPossibleMoves
263+
clearPossibleMoves,
264+
// Export state variables with getters for test access
265+
get selectedSquare() { return selectedSquare; },
266+
get possibleMoves() { return possibleMoves; },
267+
get renderedState() { return renderedState; }
264268
};
265269
}

js/game.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ function handleBoardClick(row, col) {
101101

102102
const clickedPiece = boardState[row][col];
103103

104-
if (selectedSquare) {
104+
if (selectedSquare && Array.isArray(possibleMoves)) {
105105
// Attempting to make a move
106106
const move = {
107107
from: selectedSquare,

tests/integration/game-flow.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ describe('integration: game flow', () => {
5555
global.setPossibleMoves = board.setPossibleMoves;
5656
global.clearPossibleMoves = board.clearPossibleMoves;
5757

58+
// Set up board state globals that game.js expects
59+
Object.defineProperty(global, 'selectedSquare', {
60+
get: () => board.selectedSquare,
61+
configurable: true
62+
});
63+
Object.defineProperty(global, 'possibleMoves', {
64+
get: () => board.possibleMoves,
65+
configurable: true
66+
});
67+
5868
const game = require('../../js/game');
5969
initializeGame = game.initializeGame;
6070
handleBoardClick = game.handleBoardClick;

tests/unit/game-moves.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ describe('game core', () => {
4646
global.setPossibleMoves = board.setPossibleMoves;
4747
global.clearPossibleMoves = board.clearPossibleMoves;
4848

49+
// Set up board state globals that game.js expects
50+
Object.defineProperty(global, 'selectedSquare', {
51+
get: () => board.selectedSquare,
52+
configurable: true
53+
});
54+
Object.defineProperty(global, 'possibleMoves', {
55+
get: () => board.possibleMoves,
56+
configurable: true
57+
});
58+
4959
const game = require('../../js/game');
5060
initializeGame = game.initializeGame;
5161
handleBoardClick = game.handleBoardClick;

0 commit comments

Comments
 (0)