41 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|