openpetswithchatandmcp/apps/desktop/tests/update-version.test.ts
2026-05-18 01:00:23 +02:00

28 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict";
import { createParsedUpdateStatus, isVersionNewer, normalizeVersion } from "../src/update-version.js";
assert.equal(normalizeVersion("v1.2.3"), "1.2.3");
assert.equal(normalizeVersion("1.2.3"), "1.2.3");
assert.equal(normalizeVersion("v1.2.3-beta.1"), "1.2.3");
assert.equal(normalizeVersion("release"), null);
assert.equal(isVersionNewer("1.0.1", "1.0.0"), true);
assert.equal(isVersionNewer("1.2.0", "1.1.9"), true);
assert.equal(isVersionNewer("2.0.0", "1.99.99"), true);
assert.equal(isVersionNewer("1.0.0", "1.0.0"), false);
assert.equal(isVersionNewer("1.0.0", "1.0.1"), false);
assert.equal(isVersionNewer("bad", "1.0.1"), false);
const repo = "alvinunreal/openpets";
const releasesUrl = `https://github.com/${repo}/releases`;
const available = createParsedUpdateStatus("1.0.0", { tag_name: "v1.0.1", html_url: "https://github.com/alvinunreal/openpets/releases/tag/v1.0.1" }, 123, repo, releasesUrl);
assert.equal(available.state, "available");
assert.equal(available.latestVersion, "1.0.1");
const current = createParsedUpdateStatus("1.0.1", { tag_name: "v1.0.1", html_url: "https://github.com/alvinunreal/openpets/releases/tag/v1.0.1" }, 124, repo, releasesUrl);
assert.equal(current.state, "current");
assert.throws(() => createParsedUpdateStatus("1.0.0", { tag_name: "release" }, 125, repo, releasesUrl));
console.error("Update checker validation passed.");