mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
fix(system-notices): coerce prerelease app version before semver comparison
This commit is contained in:
@@ -30,9 +30,11 @@ function evaluateOne(condition: NoticeCondition, ctx: ConditionContext): boolean
|
|||||||
const userVersion = semver.valid(ctx.user.first_seen_version) ?? '0.0.0';
|
const userVersion = semver.valid(ctx.user.first_seen_version) ?? '0.0.0';
|
||||||
const noticeVersion = semver.valid(condition.version);
|
const noticeVersion = semver.valid(condition.version);
|
||||||
if (!noticeVersion) return false;
|
if (!noticeVersion) return false;
|
||||||
|
// Strip prerelease/build metadata so '3.0.0-pre.42' is treated as '3.0.0'.
|
||||||
|
const appVersion = semver.coerce(ctx.currentAppVersion)?.version ?? '0.0.0';
|
||||||
return (
|
return (
|
||||||
semver.lt(userVersion, noticeVersion) &&
|
semver.lt(userVersion, noticeVersion) &&
|
||||||
semver.gte(semver.valid(ctx.currentAppVersion) ?? '0.0.0', noticeVersion)
|
semver.gte(appVersion, noticeVersion)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,12 @@ describe('existingUserBeforeVersion', () => {
|
|||||||
it('fails when current app version < notice version', () => {
|
it('fails when current app version < notice version', () => {
|
||||||
expect(evaluate(notice, { ...baseCtx, currentAppVersion: '1.5.0' })).toBe(false);
|
expect(evaluate(notice, { ...baseCtx, currentAppVersion: '1.5.0' })).toBe(false);
|
||||||
});
|
});
|
||||||
|
it('passes when current app version is a prerelease of the notice version', () => {
|
||||||
|
expect(evaluate(notice, { ...baseCtx, currentAppVersion: '2.0.0-pre.42' })).toBe(true);
|
||||||
|
});
|
||||||
|
it('passes when current app version is a prerelease beyond the notice version', () => {
|
||||||
|
expect(evaluate(notice, { ...baseCtx, currentAppVersion: '2.1.0-pre.1' })).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('dateWindow', () => {
|
describe('dateWindow', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user