UNPKG

@jeremyckahn/farmhand

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