@jeremyckahn/farmhand
Version:
A farming game
97 lines (89 loc) • 2.64 kB
JavaScript
import { carrot, sunflower } from '../data/crops/index.js'
import { wineChardonnay, wineNebbiolo } from '../data/recipes.js'
import { getKegStub } from '../test-utils/stubs/getKegStub.js'
import { getKegValue } from './getKegValue.js'
describe('getKegValue', () => {
test.each([
// Tier 1 crop
{
keg: getKegStub({ itemId: carrot.id, daysUntilMature: 5 }),
expected: 0,
},
{
keg: getKegStub({ itemId: carrot.id, daysUntilMature: 0 }),
expected: 25,
},
{
keg: getKegStub({ itemId: carrot.id, daysUntilMature: -5 }),
expected: 27.6,
},
{
keg: getKegStub({ itemId: carrot.id, daysUntilMature: -50 }),
expected: 67.29,
},
// Higher tier crop
{
keg: getKegStub({ itemId: sunflower.id, daysUntilMature: 0 }),
expected: 708,
},
{
keg: getKegStub({ itemId: sunflower.id, daysUntilMature: -5 }),
expected: 781.69,
},
{
keg: getKegStub({ itemId: sunflower.id, daysUntilMature: -50 }),
expected: 1905.64,
},
])(
'calculates fermented crop value: (itemId: $keg.itemId, daysUntilMature: $keg.daysUntilMature) -> $expected',
({ keg, expected }) => {
const rawResult = getKegValue(keg)
const result = Number(rawResult.toFixed(2))
expect(result).toEqual(expected)
}
)
test.each([
// Lower value wine
{
keg: getKegStub({ itemId: wineChardonnay.id, daysUntilMature: 5 }),
expected: 0,
},
{
keg: getKegStub({ itemId: wineChardonnay.id, daysUntilMature: 0 }),
expected: 23836.64,
},
{
keg: getKegStub({ itemId: wineChardonnay.id, daysUntilMature: -5 }),
expected: 25299.34,
},
// NOTE: Wine value maxes out at 100 days
{
keg: getKegStub({ itemId: wineChardonnay.id, daysUntilMature: -100 }),
expected: 104083.82,
},
{
keg: getKegStub({ itemId: wineChardonnay.id, daysUntilMature: -1000 }),
expected: 104083.82,
},
// Lower value wine
{
keg: getKegStub({ itemId: wineNebbiolo.id, daysUntilMature: 0 }),
expected: 148729.22,
},
{
keg: getKegStub({ itemId: wineNebbiolo.id, daysUntilMature: -5 }),
expected: 157855.77,
},
{
keg: getKegStub({ itemId: wineNebbiolo.id, daysUntilMature: -100 }),
expected: 649433.19,
},
])(
'calculates wine keg value (itemId: $keg.itemId, daysUntilMature: $keg.daysUntilMature) -> $expected',
({ keg, expected }) => {
const rawResult = getKegValue(keg)
const result = Number(rawResult.toFixed(2))
expect(result).toEqual(expected)
}
)
})