Release Healer Man 0.1.12
This commit is contained in:
1 parent
13970d03c8
commit
65e24f644e
201 files changed
+5061
-123
No files matched your search
@@ -0,0 +1,127 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import {
|
||||
GM_REVIEW_NOTE_MAX_LENGTH,
|
||||
MANASTORM_ADMIN_CONFIG_SCHEMA_VERSION,
|
||||
normalizeManastormAdminConfig,
|
||||
stampManastormReviewMetadata,
|
||||
} from "./manastorm-config.mjs";
|
||||
|
||||
const global = {
|
||||
enabled: true,
|
||||
levelingEnabled: true,
|
||||
endgameEnabled: true,
|
||||
affixesEnabled: true,
|
||||
chaoticLinkEnabled: true,
|
||||
milestoneEncountersEnabled: true,
|
||||
};
|
||||
|
||||
test("migrates schema-v1 Manastorm configuration and preserves records", () => {
|
||||
const migrated = normalizeManastormAdminConfig({
|
||||
schemaVersion: 1,
|
||||
global,
|
||||
dungeonSpawns: {
|
||||
deadmines: { footPosition: [1, 2, 3], yaw: 0.25 },
|
||||
},
|
||||
bosses: {
|
||||
"boss:key": { status: "not-ready" },
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(migrated.schemaVersion, MANASTORM_ADMIN_CONFIG_SCHEMA_VERSION);
|
||||
assert.deepEqual(migrated.dungeons, {});
|
||||
assert.deepEqual(migrated.dungeonSpawns.deadmines, { footPosition: [1, 2, 3], yaw: 0.25 });
|
||||
assert.equal(migrated.bosses["boss:key"].status, "not-ready");
|
||||
});
|
||||
|
||||
test("accepts valid dungeon readiness and rejects invalid values", () => {
|
||||
const normalized = normalizeManastormAdminConfig({
|
||||
schemaVersion: 2,
|
||||
global,
|
||||
dungeonSpawns: {},
|
||||
dungeons: { deadmines: { status: "ready" } },
|
||||
bosses: {},
|
||||
});
|
||||
assert.equal(normalized.dungeons.deadmines.status, "ready");
|
||||
|
||||
assert.throws(() => normalizeManastormAdminConfig({
|
||||
schemaVersion: 2,
|
||||
global,
|
||||
dungeonSpawns: {},
|
||||
dungeons: { deadmines: { status: "unknown" } },
|
||||
bosses: {},
|
||||
}), /status is invalid/);
|
||||
});
|
||||
|
||||
test("normalizes review notes and rejects oversized comments", () => {
|
||||
const normalized = normalizeManastormAdminConfig({
|
||||
schemaVersion: 2,
|
||||
global,
|
||||
dungeonSpawns: {},
|
||||
dungeons: {
|
||||
deadmines: {
|
||||
status: "not-ready",
|
||||
note: " Door trigger clips.\r\nRetest after the fix. ",
|
||||
reviewedAt: 1_700_000_000_000,
|
||||
reviewedBy: "Phenom",
|
||||
},
|
||||
},
|
||||
bosses: {},
|
||||
});
|
||||
assert.deepEqual(normalized.dungeons.deadmines, {
|
||||
status: "not-ready",
|
||||
note: "Door trigger clips.\nRetest after the fix.",
|
||||
reviewedAt: 1_700_000_000_000,
|
||||
reviewedBy: "Phenom",
|
||||
});
|
||||
|
||||
assert.throws(() => normalizeManastormAdminConfig({
|
||||
schemaVersion: 2,
|
||||
global,
|
||||
dungeonSpawns: {},
|
||||
dungeons: { deadmines: { status: "not-ready", note: "x".repeat(GM_REVIEW_NOTE_MAX_LENGTH + 1) } },
|
||||
bosses: {},
|
||||
}), /note must be a string no longer/);
|
||||
});
|
||||
|
||||
test("stamps changed review records and ignores incoming metadata spoofing", () => {
|
||||
const previous = normalizeManastormAdminConfig({
|
||||
schemaVersion: 2,
|
||||
global,
|
||||
dungeonSpawns: {},
|
||||
dungeons: {
|
||||
deadmines: {
|
||||
status: "not-ready",
|
||||
note: "Existing note",
|
||||
reviewedAt: 100,
|
||||
reviewedBy: "OriginalGM",
|
||||
},
|
||||
},
|
||||
bosses: {},
|
||||
});
|
||||
const incoming = normalizeManastormAdminConfig({
|
||||
...previous,
|
||||
dungeons: {
|
||||
deadmines: {
|
||||
...previous.dungeons.deadmines,
|
||||
reviewedAt: 999,
|
||||
reviewedBy: "SpoofedGM",
|
||||
},
|
||||
stockades: {
|
||||
status: "needs-tested",
|
||||
note: "Check the prison doors.",
|
||||
reviewedAt: 999,
|
||||
reviewedBy: "SpoofedGM",
|
||||
},
|
||||
},
|
||||
});
|
||||
const stamped = stampManastormReviewMetadata(previous, incoming, "Phenom", 200);
|
||||
|
||||
assert.deepEqual(stamped.dungeons.deadmines, previous.dungeons.deadmines);
|
||||
assert.deepEqual(stamped.dungeons.stockades, {
|
||||
status: "needs-tested",
|
||||
note: "Check the prison doors.",
|
||||
reviewedAt: 200,
|
||||
reviewedBy: "Phenom",
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user