import { describe, expect, it } from "vitest"; import { inventorySummary, playerStatsFromSnapshot } from "../src/renderer/playtest-hud.js"; describe("playerStatsFromSnapshot", () => { it("reads gold, stamina, seed and inventory from the player entity", () => { const stats = playerStatsFromSnapshot([ { id: "plot:0:0", type: "plot" }, { id: "player", type: "player", gold: 42, stamina: 30, selectedSeed: "carrot-seed", inventory: { carrot: 3, "carrot-seed": 1 } }, ]); expect(stats.gold).toBe(42); expect(stats.stamina).toBe(30); expect(stats.selectedSeed).toBe("carrot-seed"); expect(stats.inventory).toEqual({ carrot: 3, "carrot-seed": 1 }); }); it("defaults when the player or fields are missing", () => { const stats = playerStatsFromSnapshot([]); expect(stats.gold).toBe(0); expect(stats.stamina).toBe(0); expect(stats.selectedSeed).toBeNull(); expect(stats.inventory).toEqual({}); }); it("drops zero/negative inventory quantities", () => { const stats = playerStatsFromSnapshot([ { id: "player", type: "player", inventory: { carrot: 2, hoe: 0, weed: -1 } }, ]); expect(stats.inventory).toEqual({ carrot: 2 }); }); }); describe("inventorySummary", () => { it("joins inventory items", () => { expect(inventorySummary({ inventory: { carrot: 3, hoe: 1 }, gold: 0, stamina: 0, selectedSeed: null })).toBe( "carrot ×3 · hoe ×1", ); }); it("shows a placeholder for an empty inventory", () => { expect(inventorySummary({ inventory: {}, gold: 0, stamina: 0, selectedSeed: null })).toBe("items: —"); }); });