@jeremyckahn/farmhand
Version:
A farming game
64 lines (55 loc) • 1.61 kB
text/typescript
import { testState } from '../../test-utils/index.js'
import { decrementItemFromInventory } from './decrementItemFromInventory.js'
describe('decrementItemFromInventory', () => {
let updatedState: farmhand.state
describe('item is not in inventory', () => {
beforeEach(() => {
updatedState = decrementItemFromInventory(
testState({
inventory: [{ id: 'sample-item-1', quantity: 1 }],
}),
'nonexistent-item'
)
})
test('no-ops', () => {
expect(updatedState).toMatchObject({
inventory: [{ id: 'sample-item-1', quantity: 1 }],
})
})
})
describe('item is in inventory', () => {
describe('single instance of item in inventory', () => {
beforeEach(() => {
updatedState = decrementItemFromInventory(
testState({
inventory: [{ id: 'sample-item-1', quantity: 1 }],
}),
'sample-item-1'
)
})
test('removes item from inventory', () => {
expect(updatedState).toMatchObject({ inventory: [] })
})
})
describe('multiple instances of item in inventory', () => {
beforeEach(() => {
updatedState = decrementItemFromInventory(
testState({
inventory: [{ id: 'sample-item-1', quantity: 2 }],
}),
'sample-item-1'
)
})
test('decrements item', () => {
expect(updatedState).toMatchObject({
inventory: [
{
id: 'sample-item-1',
quantity: 1,
},
],
})
})
})
})
})