34 lines
1.3 KiB
TypeScript
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({ "heavy-cargo": 1 });
|
|
});
|
|
});
|