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', () => { }) })