Files
2026-09-26 20:54:40 +07:00

41 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
catalogFormatVersion,
catalogSnapshotIsCurrent,
compareLunarisVersions,
parseLunarisVersionChange,
} from "./version";
describe("Lunaris version announcements", () => {
it("extracts a version change from a full announcement", () => {
expect(
parseLunarisVersionChange(`Lunaris has been updated!
Version Change: 7.0.53.2 → 7.0.54
Characters
Odette`),
).toEqual({
previousVersion: "7.0.53.2",
targetVersion: "7.0.54",
});
});
it("ignores ordinary and malformed messages", () => {
expect(parseLunarisVersionChange("hello")).toBeNull();
expect(parseLunarisVersionChange("Version Change: latest → 7.0.54")).toBeNull();
expect(parseLunarisVersionChange("Version Change: 7.0.53 -> 7.0.54")).toBeNull();
});
it("orders numeric dotted versions with different segment counts", () => {
expect(compareLunarisVersions("7.0.54", "7.0.53.2")).toBe(1);
expect(compareLunarisVersions("7.0.54", "7.0.54.0")).toBe(0);
expect(compareLunarisVersions("7.0.53.2", "7.0.54")).toBe(-1);
});
it("refreshes a same-version catalog when its local format is outdated", () => {
expect(catalogSnapshotIsCurrent("7.0.54", "7.0.54", null)).toBe(false);
expect(catalogSnapshotIsCurrent("7.0.54", "7.0.54", catalogFormatVersion - 1)).toBe(false);
expect(catalogSnapshotIsCurrent("7.0.54", "7.0.54", catalogFormatVersion)).toBe(true);
});
});