You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

89 lines
2.5 KiB

import { init_game, bake_items, is_menu_item_enabled } from './game.js';
describe('init_game', () => {
test('should create a new game state with default values', () => {
const game = init_game();
expect(game.player_money).toBe(0);
expect(game.time.day).toBe(1);
expect(game.time.phase).toBe('planning');
expect(game.oven.capacity).toBe(4);
expect(game.oven.used).toBe(0);
});
test('should start with zero supplies', () => {
const game = init_game();
expect(game.supplies.flour).toBe(0);
expect(game.supplies.eggs).toBe(0);
expect(game.supplies.sugar).toBe(0);
});
});
describe('is_menu_item_enabled', () => {
test('should return false when supplies are insufficient', () => {
const game = init_game();
// No supplies, so nothing should be enabled
expect(is_menu_item_enabled(game, 'bread')).toBe(false);
expect(is_menu_item_enabled(game, 'cookies')).toBe(false);
});
test('should return true when supplies are sufficient', () => {
const game = init_game();
// Add enough supplies for bread (flour: 2, yeast: 1, milk: 1)
game.supplies.flour = 10;
game.supplies.yeast = 5;
game.supplies.milk = 5;
expect(is_menu_item_enabled(game, 'bread')).toBe(true);
});
test('should return false for non-existent menu item', () => {
const game = init_game();
expect(is_menu_item_enabled(game, 'pizza')).toBe(false);
});
});
describe('bake_items', () => {
test('should deduct ingredients when baking', () => {
const game = init_game();
// Add supplies for bread
game.supplies.flour = 10;
game.supplies.yeast = 5;
game.supplies.milk = 5;
const result = bake_items(game, 'bread');
// Bread uses: flour: 2, yeast: 1, milk: 1
expect(result.supplies.flour).toBe(8);
expect(result.supplies.yeast).toBe(4);
expect(result.supplies.milk).toBe(4);
});
test('should increase oven used slots', () => {
const game = init_game();
game.supplies.flour = 10;
game.supplies.yeast = 5;
game.supplies.milk = 5;
const result = bake_items(game, 'bread');
// Bread uses 1 oven slot
expect(result.oven.used).toBe(1);
});
test('should not mutate the original game state', () => {
const game = init_game();
game.supplies.flour = 10;
game.supplies.yeast = 5;
game.supplies.milk = 5;
bake_items(game, 'bread');
// Original should be unchanged
expect(game.supplies.flour).toBe(10);
expect(game.oven.used).toBe(0);
});
});