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); }); });