82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import { describe, expect, it, test } from "vitest";
|
|
import { initialActions } from "../../../util/stateSetters";
|
|
import { mockPlayerOne, mockState } from "../../../util/testUtils";
|
|
import { AppState, PlayerData } from "../../../util/types";
|
|
import { hasMaxChips, validateChips } from "./getChipsActions";
|
|
|
|
const getChipsState: AppState = {
|
|
...mockState,
|
|
actions: {
|
|
...initialActions,
|
|
getChips: {
|
|
active: true,
|
|
selection: []
|
|
}
|
|
}
|
|
}
|
|
|
|
describe('get chips', () => {
|
|
test('hasMaxChips', () => {
|
|
const illegalPlayer: PlayerData = {
|
|
...mockPlayerOne,
|
|
inventory: {
|
|
ruby: 2,
|
|
sapphire: 2,
|
|
emerald: 2,
|
|
diamond: 2,
|
|
onyx: 2,
|
|
gold: 2
|
|
}
|
|
}
|
|
|
|
expect(hasMaxChips(illegalPlayer)).toBeTruthy();
|
|
})
|
|
|
|
describe('validateChips', () => {
|
|
test('is falsy when chips action is not active', () => {
|
|
expect(validateChips(mockState)).toBeFalsy();
|
|
})
|
|
|
|
test('is falsy when more than three chips selected', () => {
|
|
const illegalState = getChipsState;
|
|
illegalState.actions.getChips.selection = ['ruby', 'diamond', 'onyx', 'sapphire']
|
|
expect(validateChips(illegalState)).toBeFalsy();
|
|
})
|
|
|
|
test('proper handling of duplicates', () => {
|
|
const illegalState = getChipsState;
|
|
illegalState.actions.getChips.selection = ['ruby', 'ruby', 'ruby']
|
|
|
|
const legalState = getChipsState;
|
|
legalState.actions.getChips.selection = ['ruby', 'ruby']
|
|
|
|
expect(validateChips(illegalState)).toBeFalsy();
|
|
expect(validateChips(legalState)).toBeTruthy();
|
|
})
|
|
|
|
test('no pickup of unavailable resources', () => {
|
|
const illegalState = {
|
|
...mockState,
|
|
gameboard: {
|
|
...getChipsState.gameboard,
|
|
tradingResources: {
|
|
ruby: 4,
|
|
sapphire: 4,
|
|
emerald: 1,
|
|
diamond: 4,
|
|
onyx: 2,
|
|
gold: 4
|
|
}
|
|
},
|
|
actions: {
|
|
...initialActions,
|
|
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('getChips', () => {
|
|
|
|
})
|
|
}) |