deadhead-space-freight-tycoon/packages/content/test/veteran.test.ts

34 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
content,
gameConfig,
gameConfigSchema,
veteranPilot,
veteranPilotSchema,
} from "../src/index";
describe("veteran pilot and profit share (CR-010)", () => {
it("has a valid profit share between 0 and 1", () => {
expect(gameConfigSchema.safeParse(gameConfig).success).toBe(true);
expect(gameConfig.pilotProfitShare).toBeGreaterThan(0);
expect(gameConfig.pilotProfitShare).toBeLessThan(1);
expect(gameConfigSchema.safeParse({ ...gameConfig, pilotProfitShare: 1.2 }).success).toBe(
false,
);
});
it("gives the veteran a valid level and existing skills within their skill points", () => {
expect(veteranPilotSchema.safeParse(veteranPilot).success).toBe(true);
expect(veteranPilot.level).toBe(2);
expect(veteranPilot.level).toBeLessThanOrEqual(gameConfig.pilotLevelXpThresholds.length);
const spent = Object.values(veteranPilot.skills).reduce((a, b) => a + b, 0);
expect(spent).toBeLessThanOrEqual(veteranPilot.level * gameConfig.skillPointsPerLevel);
for (const [skillId, level] of Object.entries(veteranPilot.skills)) {
const skill = content.skill(skillId);
expect(skill, skillId).toBeDefined();
expect(level).toBeLessThanOrEqual(skill!.maxLevel);
}
expect(veteranPilot.skills).toEqual({ "expensive-cargo": 1 });
});
});