48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
isNewerVersion,
|
|
parseAppUpdateManifest,
|
|
resetAppUpdateCheckForTests,
|
|
} from '../src/services/appUpdate';
|
|
|
|
afterEach(() => resetAppUpdateCheckForTests());
|
|
|
|
describe('AGC update manifest', () => {
|
|
it('compares semantic versions and accepts v prefixes', () => {
|
|
expect(isNewerVersion('v0.1.13', '0.1.12')).toBe(true);
|
|
expect(isNewerVersion('0.1.12', '0.1.12')).toBe(false);
|
|
expect(isNewerVersion('0.1.11', '0.1.12')).toBe(false);
|
|
});
|
|
|
|
it('validates an OSS manifest and rejects non-HTTPS downloads', () => {
|
|
expect(
|
|
parseAppUpdateManifest({
|
|
version: '0.1.13',
|
|
downloadUrl: 'https://oss.example/agc.exe',
|
|
}),
|
|
).toMatchObject({
|
|
version: '0.1.13',
|
|
downloadUrl: 'https://oss.example/agc.exe',
|
|
});
|
|
expect(
|
|
parseAppUpdateManifest({
|
|
version: '0.1.13',
|
|
downloadUrl: 'http://oss.example/agc.exe',
|
|
}),
|
|
).toBeNull();
|
|
});
|
|
|
|
it('preserves multiline release notes', () => {
|
|
expect(
|
|
parseAppUpdateManifest({
|
|
version: '0.1.13',
|
|
downloadUrl: 'https://oss.example/agc.exe',
|
|
releaseNotes: '第一行\n第二行\r\n第三行',
|
|
}),
|
|
).toMatchObject({
|
|
releaseNotes: '第一行\n第二行\r\n第三行',
|
|
});
|
|
});
|
|
});
|