Spaces:
Runtime error
Runtime error
File size: 2,058 Bytes
46252cd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import { compareSemver, annotateCatalog, CatalogEntry } from './catalog';
describe('compareSemver', () => {
it('orders by major, minor, then patch', () => {
expect(compareSemver('1.0.0', '1.0.0')).toBe(0);
expect(compareSemver('1.2.0', '1.1.9')).toBe(1);
expect(compareSemver('0.9.9', '1.0.0')).toBe(-1);
expect(compareSemver('2.0.0', '1.9.9')).toBe(1);
});
it('ignores a pre-release suffix and missing segments', () => {
expect(compareSemver('1.2.0-beta.1', '1.2.0')).toBe(0);
expect(compareSemver('1.2', '1.2.0')).toBe(0);
expect(compareSemver('garbage', '0.0.0')).toBe(0);
});
});
describe('annotateCatalog', () => {
const entries: CatalogEntry[] = [
{ id: 'gsheets-logger', name: 'GSheets', version: '0.3.0' },
{ id: 'faq-bot', name: 'FAQ', version: '1.0.0' },
];
it('flags an installed plugin with a newer catalog version as updateAvailable', () => {
const out = annotateCatalog(entries, [{ id: 'gsheets-logger', version: '0.2.0' }]);
const gs = out.find(e => e.id === 'gsheets-logger')!;
expect(gs.installed).toBe(true);
expect(gs.installedVersion).toBe('0.2.0');
expect(gs.updateAvailable).toBe(true);
});
it('does not flag updateAvailable when installed == catalog version', () => {
const out = annotateCatalog(entries, [{ id: 'gsheets-logger', version: '0.3.0' }]);
expect(out.find(e => e.id === 'gsheets-logger')!.updateAvailable).toBe(false);
});
it('marks a not-installed entry installed:false with no update', () => {
const out = annotateCatalog(entries, [{ id: 'gsheets-logger', version: '0.3.0' }]);
const faq = out.find(e => e.id === 'faq-bot')!;
expect(faq.installed).toBe(false);
expect(faq.installedVersion).toBeNull();
expect(faq.updateAvailable).toBe(false);
});
it('does not flag a downgrade (installed newer than catalog) as updateAvailable', () => {
const out = annotateCatalog(entries, [{ id: 'faq-bot', version: '2.0.0' }]);
expect(out.find(e => e.id === 'faq-bot')!.updateAvailable).toBe(false);
});
});
|