16 unit tests covering normalize/compare/isNewer. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import { test, expect, describe } from 'vitest';
|
|
import {
|
|
normalizeUpdateVersion,
|
|
compareUpdateVersions,
|
|
isNewerUpdateVersion,
|
|
} from './update-version-utils';
|
|
|
|
describe('normalizeUpdateVersion', () => {
|
|
test('strips v-prefix lowercase', () => {
|
|
expect(normalizeUpdateVersion('v1.2.3')).toBe('1.2.3');
|
|
});
|
|
test('strips V-prefix uppercase', () => {
|
|
expect(normalizeUpdateVersion('V1.2.3')).toBe('1.2.3');
|
|
});
|
|
test('trims whitespace', () => {
|
|
expect(normalizeUpdateVersion(' 1.2.3 ')).toBe('1.2.3');
|
|
});
|
|
test('handles null and undefined as empty string', () => {
|
|
expect(normalizeUpdateVersion(null)).toBe('');
|
|
expect(normalizeUpdateVersion(undefined)).toBe('');
|
|
});
|
|
test('passes plain version unchanged', () => {
|
|
expect(normalizeUpdateVersion('4.6.155')).toBe('4.6.155');
|
|
});
|
|
});
|
|
|
|
describe('compareUpdateVersions', () => {
|
|
test('older < newer in same minor', () => {
|
|
expect(compareUpdateVersions('4.1.10', '4.1.18')).toBeLessThan(0);
|
|
});
|
|
test('newer > older in same minor', () => {
|
|
expect(compareUpdateVersions('4.1.18', '4.1.10')).toBeGreaterThan(0);
|
|
});
|
|
test('equal versions return 0', () => {
|
|
expect(compareUpdateVersions('4.6.155', '4.6.155')).toBe(0);
|
|
});
|
|
test('v-prefix is normalized away', () => {
|
|
expect(compareUpdateVersions('v4.1.12', '4.1.12')).toBe(0);
|
|
});
|
|
test('extra trailing part is newer', () => {
|
|
expect(compareUpdateVersions('4.1.12', '4.1.12.1')).toBeLessThan(0);
|
|
});
|
|
test('major bump wins', () => {
|
|
expect(compareUpdateVersions('5.0.0', '4.99.99')).toBeGreaterThan(0);
|
|
});
|
|
test('null versions sort lowest', () => {
|
|
expect(compareUpdateVersions(null, '1.0.0')).toBeLessThan(0);
|
|
expect(compareUpdateVersions('1.0.0', null)).toBeGreaterThan(0);
|
|
});
|
|
test('both null returns 0', () => {
|
|
expect(compareUpdateVersions(null, null)).toBe(0);
|
|
expect(compareUpdateVersions('', '')).toBe(0);
|
|
});
|
|
});
|
|
|
|
describe('isNewerUpdateVersion', () => {
|
|
test('strictly newer returns true', () => {
|
|
expect(isNewerUpdateVersion('4.1.18', '4.1.17')).toBe(true);
|
|
});
|
|
test('equal returns false', () => {
|
|
expect(isNewerUpdateVersion('4.1.18', '4.1.18')).toBe(false);
|
|
});
|
|
test('older returns false', () => {
|
|
expect(isNewerUpdateVersion('4.1.17', '4.1.18')).toBe(false);
|
|
});
|
|
});
|