Spaces:
Runtime error
Runtime error
| 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); | |
| }); | |
| }); | |