@jeremyckahn/farmhand
Version:
A farming game
48 lines (34 loc) • 1.46 kB
text/typescript
import { EXPERIENCE_VALUES, PURCHASEABLE_COW_PENS } from '../../constants.js'
import { testState } from '../../test-utils/index.js'
import { purchaseCowPen } from './purchaseCowPen.js'
describe('purchaseCowPen', () => {
test('updates purchasedCowPen', () => {
const { purchasedCowPen } = purchaseCowPen(testState(), 1)
expect(purchasedCowPen).toEqual(1)
})
test('prevents repurchasing options', () => {
const { purchasedCowPen } = purchaseCowPen(
testState({ purchasedCowPen: 2 }),
1
)
expect(purchasedCowPen).toEqual(2)
})
test('deducts money', () => {
const { money } = purchaseCowPen(testState({ money: 1500 }), 1)
expect(money).toEqual(1500 - (PURCHASEABLE_COW_PENS.get(1)?.price ?? 0))
})
test('shows notification of purchase', () => {
const { todaysNotifications } = purchaseCowPen(testState(), 1)
expect(todaysNotifications[0].message).toEqual(
'Purchased a cow pen with capacity for 10 cows! You can visit your cow pen by going to the "Cows" page.'
)
})
test('adds experience when cow pen is acquired', () => {
const { experience } = purchaseCowPen(testState({ experience: 0 }), 1)
expect(experience).toEqual(EXPERIENCE_VALUES.COW_PEN_ACQUIRED)
})
test('adds experience when cow pen is expanded', () => {
const { experience } = purchaseCowPen(testState({ experience: 0 }), 2)
expect(experience).toEqual(EXPERIENCE_VALUES.COW_PEN_EXPANDED)
})
})