Files
openwork/evals/specs/alpha-update-eligibility.test.ts

38 lines
1.7 KiB
TypeScript

import { expect } from "vitest";
import { test } from "@openwork/testkit";
import { isAlphaUpdateAllowedByVersionCeiling } from "../../apps/app/src/app/lib/version-gate";
import { resolveCheckedUpdateState } from "../../apps/app/src/react-app/domains/settings/state/electron-updater-state";
test("an installed alpha can receive its next build without a false up-to-date status", ({ evidence }) => {
const currentVersion = "0.18.37-alpha.2491+64d2d37";
const updateVersion = "0.18.37-alpha.2492+4921a02";
const allowed = isAlphaUpdateAllowedByVersionCeiling({
updateVersion,
currentVersion,
denLatestAppVersion: "0.18.35",
desktopConfig: { allowAlphaUpdates: true },
});
expect(allowed).toBe(true);
expect(resolveCheckedUpdateState({ available: true, allowed })).toBe("available");
evidence.recordAssertionEvidence(
"An installed Alpha build remains eligible for newer builds on the same release",
`${currentVersion} accepts ${updateVersion} even while Den's stable release metadata is 0.18.35, and the updater state exposes the candidate as available.`,
true,
);
const newerReleaseAllowed = isAlphaUpdateAllowedByVersionCeiling({
updateVersion: "0.18.38-alpha.2493+abcdef0",
currentVersion,
denLatestAppVersion: "0.18.35",
desktopConfig: { allowAlphaUpdates: true },
});
expect(newerReleaseAllowed).toBe(false);
expect(resolveCheckedUpdateState({ available: true, allowed: newerReleaseAllowed })).toBe("blocked");
evidence.recordAssertionEvidence(
"The rollout ceiling still blocks a new release line without claiming the app is current",
"The same installation rejects 0.18.38-alpha.2493 and maps the available-but-ineligible candidate to blocked rather than idle.",
true,
);
});