playtest-hud.test.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { describe, expect, it } from "vitest";
  2. import { inventorySummary, playerStatsFromSnapshot } from "../src/renderer/playtest-hud.js";
  3. describe("playerStatsFromSnapshot", () => {
  4. it("reads gold, stamina, seed and inventory from the player entity", () => {
  5. const stats = playerStatsFromSnapshot([
  6. { id: "plot:0:0", type: "plot" },
  7. { id: "player", type: "player", gold: 42, stamina: 30, selectedSeed: "carrot-seed", inventory: { carrot: 3, "carrot-seed": 1 } },
  8. ]);
  9. expect(stats.gold).toBe(42);
  10. expect(stats.stamina).toBe(30);
  11. expect(stats.selectedSeed).toBe("carrot-seed");
  12. expect(stats.inventory).toEqual({ carrot: 3, "carrot-seed": 1 });
  13. });
  14. it("defaults when the player or fields are missing", () => {
  15. const stats = playerStatsFromSnapshot([]);
  16. expect(stats.gold).toBe(0);
  17. expect(stats.stamina).toBe(0);
  18. expect(stats.selectedSeed).toBeNull();
  19. expect(stats.inventory).toEqual({});
  20. });
  21. it("drops zero/negative inventory quantities", () => {
  22. const stats = playerStatsFromSnapshot([
  23. { id: "player", type: "player", inventory: { carrot: 2, hoe: 0, weed: -1 } },
  24. ]);
  25. expect(stats.inventory).toEqual({ carrot: 2 });
  26. });
  27. });
  28. describe("inventorySummary", () => {
  29. it("joins inventory items", () => {
  30. expect(inventorySummary({ inventory: { carrot: 3, hoe: 1 }, gold: 0, stamina: 0, selectedSeed: null })).toBe(
  31. "carrot ×3 · hoe ×1",
  32. );
  33. });
  34. it("shows a placeholder for an empty inventory", () => {
  35. expect(inventorySummary({ inventory: {}, gold: 0, stamina: 0, selectedSeed: null })).toBe("items: —");
  36. });
  37. });