generated from nhcarrigan/template
chore: fix lint, ensure full CI pipeline passes, add verify checklist
- Fix strict-boolean-expressions in 7 route files (runtime body validation) - Fix no-unnecessary-condition in profile.ts and offlineProgress.ts (defensive null checks) - Extend v8 ignore next-N counts in game.ts to reach 100% coverage - Add CI requirements to CLAUDE.md (lint + build + test must pass before commit) - Add manual verification checklist (verify.md) - Remove progress.md
This commit is contained in:
@@ -5,10 +5,10 @@ import {
|
||||
buildPostApotheosisState,
|
||||
isEligibleForApotheosis,
|
||||
} from "../../src/services/apotheosis.js";
|
||||
import { DEFAULT_TRANSCENDENCE_UPGRADES } from "../../src/data/transcendenceUpgrades.js";
|
||||
import { defaultTranscendenceUpgrades } from "../../src/data/transcendenceUpgrades.js";
|
||||
import type { GameState } from "@elysium/types";
|
||||
|
||||
const ALL_UPGRADE_IDS = DEFAULT_TRANSCENDENCE_UPGRADES.map((u) => u.id);
|
||||
const ALL_UPGRADE_IDS = defaultTranscendenceUpgrades.map((u) => u.id);
|
||||
|
||||
const makeMinimalState = (overrides: Partial<GameState> = {}): GameState =>
|
||||
({
|
||||
@@ -74,42 +74,42 @@ describe("isEligibleForApotheosis", () => {
|
||||
describe("buildPostApotheosisState", () => {
|
||||
it("increments apotheosis count from 0", () => {
|
||||
const state = makeMinimalState();
|
||||
const { newApotheosisData } = buildPostApotheosisState(state, "T");
|
||||
expect(newApotheosisData.count).toBe(1);
|
||||
const { updatedApotheosisData } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedApotheosisData.count).toBe(1);
|
||||
});
|
||||
|
||||
it("increments apotheosis count from existing value", () => {
|
||||
const state = makeMinimalState({ apotheosis: { count: 2 } });
|
||||
const { newApotheosisData } = buildPostApotheosisState(state, "T");
|
||||
expect(newApotheosisData.count).toBe(3);
|
||||
const { updatedApotheosisData } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedApotheosisData.count).toBe(3);
|
||||
});
|
||||
|
||||
it("persists codex", () => {
|
||||
const codex = { entries: [{ id: "e1", unlockedAt: 1000, sourceType: "exploration" as const }] };
|
||||
const state = makeMinimalState({ codex });
|
||||
const { newState } = buildPostApotheosisState(state, "T");
|
||||
expect(newState.codex).toEqual(codex);
|
||||
const { updatedState } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedState.codex).toEqual(codex);
|
||||
});
|
||||
|
||||
it("persists story", () => {
|
||||
const story = { unlockedChapterIds: ["ch1"], completedChapters: [] };
|
||||
const state = makeMinimalState({ story });
|
||||
const { newState } = buildPostApotheosisState(state, "T");
|
||||
expect(newState.story).toEqual(story);
|
||||
const { updatedState } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedState.story).toEqual(story);
|
||||
});
|
||||
|
||||
it("wipes prestige data", () => {
|
||||
const state = makeMinimalState({
|
||||
prestige: { count: 10, runestones: 1000, productionMultiplier: 3, purchasedUpgradeIds: [] },
|
||||
});
|
||||
const { newState } = buildPostApotheosisState(state, "T");
|
||||
expect(newState.prestige.count).toBe(0);
|
||||
expect(newState.prestige.runestones).toBe(0);
|
||||
const { updatedState } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedState.prestige.count).toBe(0);
|
||||
expect(updatedState.prestige.runestones).toBe(0);
|
||||
});
|
||||
|
||||
it("sets apotheosis count on new state", () => {
|
||||
const state = makeMinimalState({ apotheosis: { count: 0 } });
|
||||
const { newState } = buildPostApotheosisState(state, "T");
|
||||
expect(newState.apotheosis?.count).toBe(1);
|
||||
const { updatedState } = buildPostApotheosisState(state, "T");
|
||||
expect(updatedState.apotheosis?.count).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user