Spaces:
Sleeping
Sleeping
| import { describe, it, expect } from 'vitest'; | |
| import { isNoticeVersionActive } from '../../../src/systemNotices/service.js'; | |
| import type { SystemNotice } from '../../../src/systemNotices/types.js'; | |
| const base: SystemNotice = { | |
| id: 'test-notice', | |
| display: 'modal', | |
| severity: 'info', | |
| titleKey: 'k', | |
| bodyKey: 'k', | |
| dismissible: true, | |
| conditions: [], | |
| publishedAt: '2026-01-01T00:00:00Z', | |
| }; | |
| describe('isNoticeVersionActive', () => { | |
| it('passes when no bounds are set', () => { | |
| expect(isNoticeVersionActive(base, '3.5.0')).toBe(true); | |
| }); | |
| it('passes when app version equals minVersion (inclusive)', () => { | |
| expect(isNoticeVersionActive({ ...base, minVersion: '3.0.0' }, '3.0.0')).toBe(true); | |
| }); | |
| it('fails when app version is below minVersion', () => { | |
| expect(isNoticeVersionActive({ ...base, minVersion: '3.0.0' }, '2.9.9')).toBe(false); | |
| }); | |
| it('fails when app version equals maxVersion (exclusive upper bound)', () => { | |
| expect(isNoticeVersionActive({ ...base, maxVersion: '3.0.0' }, '3.0.0')).toBe(false); | |
| }); | |
| it('fails when app version exceeds maxVersion', () => { | |
| expect(isNoticeVersionActive({ ...base, maxVersion: '3.0.0' }, '3.0.1')).toBe(false); | |
| }); | |
| it('passes when app version is just below maxVersion', () => { | |
| expect(isNoticeVersionActive({ ...base, maxVersion: '3.0.0' }, '2.9.9')).toBe(true); | |
| }); | |
| it('passes when app version is inside [minVersion, maxVersion)', () => { | |
| expect(isNoticeVersionActive({ ...base, minVersion: '3.0.0', maxVersion: '3.9.9' }, '3.5.2')).toBe(true); | |
| }); | |
| it('treats prerelease app version as base release (semver.coerce)', () => { | |
| expect(isNoticeVersionActive({ ...base, minVersion: '3.0.0' }, '3.0.0-pre.42')).toBe(true); | |
| }); | |
| it('skips notice and returns false when minVersion is invalid semver', () => { | |
| expect(isNoticeVersionActive({ ...base, minVersion: 'not-semver' }, '3.0.0')).toBe(false); | |
| }); | |
| it('skips notice and returns false when maxVersion is invalid semver', () => { | |
| expect(isNoticeVersionActive({ ...base, maxVersion: 'garbage' }, '3.0.0')).toBe(false); | |
| }); | |
| }); | |