UNPKG

@jeremyckahn/farmhand

Version:
73 lines (61 loc) 2.26 kB
import { treeLifeStage } from '../enums.js' import { getTreeLifeStage } from './getTreeLifeStage.js' const { SEED, GROWING, GROWN, DEAD } = treeLifeStage describe('getTreeLifeStage', () => { test('maps a life cycle label to an image name chunk', () => { const itemId = 'apple' const daysSinceLastHarvest = 0 expect(getTreeLifeStage({ itemId, daysOld: 0, daysSinceLastHarvest })).toBe( SEED ) expect(getTreeLifeStage({ itemId, daysOld: 7, daysSinceLastHarvest })).toBe( GROWING ) expect( getTreeLifeStage({ itemId, daysOld: 25, daysSinceLastHarvest }) ).toBe(GROWN) }) // apple's treeTimeline (src/data/trees/apple.ts) is [5, 5, 5, 5, 5] // (GROWN from daysOld 25) with a separate lifespan of 200, so it becomes // DEAD once daysOld reaches 25 + 200 = 225. describe('a tree that has been GROWN long enough to die', () => { test('is still GROWN right up until the full timeline sum', () => { const itemId = 'apple' const daysSinceLastHarvest = 0 expect( getTreeLifeStage({ itemId, daysOld: 224, daysSinceLastHarvest }) ).toBe(GROWN) }) test('becomes DEAD once daysOld reaches the full timeline sum', () => { const itemId = 'apple' const daysSinceLastHarvest = 0 expect( getTreeLifeStage({ itemId, daysOld: 225, daysSinceLastHarvest }) ).toBe(DEAD) expect( getTreeLifeStage({ itemId, daysOld: 1000, daysSinceLastHarvest }) ).toBe(DEAD) }) }) describe('a tree instance with its own randomized lifespan', () => { test('uses tree.lifespan instead of the species default', () => { const itemId = 'apple' const daysSinceLastHarvest = 0 const daysOld = 210 // Past a shortened lifespan, not the 225 default. expect( getTreeLifeStage({ itemId, daysOld, daysSinceLastHarvest, // 25 (growth) + 185 (this tree's own, shorter lifespan) = 210. lifespan: 185, }) ).toBe(DEAD) // Same daysOld, but no override - falls back to the 225-day default, // so it's still GROWN. expect(getTreeLifeStage({ itemId, daysOld, daysSinceLastHarvest })).toBe( GROWN ) }) }) })