UNPKG

@jeremyckahn/farmhand

Version:
63 lines (53 loc) 1.79 kB
import { testCrop, testItem } from '../../test-utils/index.js' import { SPRINKLER_ITEM_ID } from '../../constants.js' import { fieldMode } from '../../enums.js' import { getPlotContentFromItemId } from '../../utils/index.js' import { setSprinkler } from './setSprinkler.js' describe('setSprinkler', () => { let state beforeEach(() => { state = { field: [[null]], fieldMode: fieldMode.SET_SPRINKLER, inventory: [testItem({ id: 'sprinkler', quantity: 1 })], itemsSold: {}, selectedItemId: SPRINKLER_ITEM_ID, } }) describe('plot is not empty', () => { test('does nothing', () => { const inputState = { ...state, field: [[testCrop()]] } state = setSprinkler(inputState, 0, 0) expect(state).toEqual(inputState) }) }) describe('plot is empty', () => { test('sets sprinkler', () => { const { field, inventory } = setSprinkler(state, 0, 0) expect(field[0][0]).toEqual(getPlotContentFromItemId('sprinkler')) expect(inventory).toHaveLength(0) }) describe('multiple sprinkler units remaining', () => { test('updates state', () => { const { fieldMode: newFieldMode, selectedItemId } = setSprinkler( { ...state, inventory: [testItem({ id: 'sprinkler', quantity: 2 })] }, 0, 0 ) expect(newFieldMode).toBe(fieldMode.SET_SPRINKLER) expect(selectedItemId).toBe(SPRINKLER_ITEM_ID) }) }) describe('one sprinkler unit remaining', () => { test('updates state', () => { const { fieldMode: newFieldMode, selectedItemId } = setSprinkler( state, 0, 0 ) expect(newFieldMode).toBe(fieldMode.OBSERVE) expect(selectedItemId).toBe('') }) }) }) })