UNPKG

@jeremyckahn/farmhand

Version:
99 lines (83 loc) 2.61 kB
import { ACHIEVEMENT_COMPLETED } from '../../templates.js' describe('updateAchievements', () => { let updateAchievements beforeAll(async () => { vitest.resetModules() vitest.mock('../../data/achievements.js', () => { return { default: [ { id: 'test-achievement', name: 'Test Achievement', description: '', rewardDescription: '', condition: state => !state.conditionSatisfied, reward: state => ({ ...state, conditionSatisfied: true }), }, ], } }) updateAchievements = (await vitest.importActual('./updateAchievements.js')) .updateAchievements }) describe('achievement was not previously met', () => { describe('condition is not met', () => { test('does not update state', () => { const inputState = { completedAchievements: {}, conditionSatisfied: true, todaysNotifications: [], } const state = updateAchievements(inputState) expect(state).toBe(inputState) }) }) describe('condition is met', () => { test('updates state', () => { const inputState = { completedAchievements: {}, conditionSatisfied: false, todaysNotifications: [], } const state = updateAchievements(inputState) expect(state).toMatchObject({ completedAchievements: { 'test-achievement': true }, conditionSatisfied: true, todaysNotifications: [ { message: ACHIEVEMENT_COMPLETED('', { name: 'Test Achievement', rewardDescription: '', }), severity: 'success', }, ], }) }) }) }) describe('achievement was previously met', () => { describe('condition is not met', () => { test('does not update state', () => { const inputState = { completedAchievements: { 'test-achievement': true }, conditionSatisfied: true, todaysNotifications: [], } const state = updateAchievements(inputState) expect(state).toBe(inputState) }) }) describe('condition is met', () => { test('does not update state', () => { const inputState = { completedAchievements: { 'test-achievement': true }, conditionSatisfied: false, todaysNotifications: [], } const state = updateAchievements(inputState) expect(state).toBe(inputState) }) }) }) })