Files
2026-02-06 13:40:01 +00:00

257 lines
7.1 KiB
TypeScript

import * as httpMock from '~test/http-mock.ts';
import { getPkgReleases } from '../index.ts';
import { Unity3dPackagesDatasource } from './index.ts';
describe('modules/datasource/unity3d-packages/index', () => {
it(`package with no versions`, async () => {
const data = `
{
"versions": {},
"time": {}
}
`;
httpMock
.scope('https://packages.unity.com')
.get('/com.unity.xr.openxr')
.reply(200, data);
const res = await getPkgReleases({
datasource: Unity3dPackagesDatasource.id,
packageName: 'com.unity.xr.openxr',
registryUrls: [],
});
expect(res?.homepage).toBeUndefined();
expect(res?.registryUrl).toBe('https://packages.unity.com');
expect(res?.releases).toBeEmpty();
});
it(`package with no documentationUrl`, async () => {
const data = `
{
"versions": {
"1.14.2": {
"version": "1.14.2"
}
},
"time": {
"1.14.2": "2025-03-27T10:54:45.412Z"
}
}
`;
httpMock
.scope('https://packages.unity.com')
.get('/com.unity.xr.openxr')
.reply(200, data);
const res = await getPkgReleases({
datasource: Unity3dPackagesDatasource.id,
packageName: 'com.unity.xr.openxr',
registryUrls: [],
});
expect(res).toEqual({
registryUrl: 'https://packages.unity.com',
releases: [
{
changelogUrl: undefined,
isStable: true,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2025-03-27T10:54:45.412Z',
version: '1.14.2',
},
],
});
});
it(`package from a custom registry`, async () => {
const data = `
{
"versions": {
"1.14.2": {
"documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.14/manual/index.html",
"version": "1.14.2"
}
},
"time": {
"1.14.2": "2025-03-27T10:54:45.412Z"
}
}
`;
httpMock
.scope('https://custom.registry.com')
.get('/com.unity.xr.openxr')
.reply(200, data);
const res = await getPkgReleases({
datasource: Unity3dPackagesDatasource.id,
packageName: 'com.unity.xr.openxr',
registryUrls: ['https://custom.registry.com'],
});
expect(res).toEqual({
homepage:
'https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.14/manual/index.html',
registryUrl: 'https://custom.registry.com',
releases: [
{
changelogUrl: undefined,
isStable: true,
registryUrl: 'https://custom.registry.com',
releaseTimestamp: '2025-03-27T10:54:45.412Z',
version: '1.14.2',
},
],
});
});
it(`package with changelog content and url`, async () => {
const data = `
{
"versions": {
"1.14.3": {
"_upm": {
"changelog": "### Fixed\\n\\n* Fixed Multiview Render Regions feature regression."
},
"documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.14/manual/index.html",
"version": "1.14.3"
},
"1.12.0-exp.1": {
"_upm": {
},
"documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.12/manual/index.html",
"version": "1.12.0-exp.1"
},
"1.0.0-pre.1": {
"version": "1.0.0-pre.1"
},
"0.1.2-preview.2": {
"version": "0.1.2-preview.2"
}
},
"time": {
"1.14.3": "2025-04-18T18:06:12.036Z",
"1.12.0-exp.1": "2024-07-03T15:24:28.000Z",
"1.0.0-pre.1": "2021-02-11T19:26:19.000Z",
"0.1.2-preview.2": "2021-01-05T17:57:41.000Z"
}
}
`;
httpMock
.scope('https://packages.unity.com')
.get('/com.unity.xr.openxr')
.reply(200, data);
const res = await getPkgReleases({
datasource: Unity3dPackagesDatasource.id,
packageName: 'com.unity.xr.openxr',
registryUrls: [],
});
expect(res).toStrictEqual({
homepage:
'https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.14/manual/index.html',
registryUrl: 'https://packages.unity.com',
releases: [
{
changelogContent: undefined,
changelogUrl: undefined,
isStable: false,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2021-01-05T17:57:41.000Z',
version: '0.1.2-preview.2',
},
{
changelogContent: undefined,
changelogUrl: undefined,
isStable: false,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2021-02-11T19:26:19.000Z',
version: '1.0.0-pre.1',
},
{
changelogContent: undefined,
changelogUrl:
'https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.12/changelog/CHANGELOG.html',
isStable: false,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2024-07-03T15:24:28.000Z',
version: '1.12.0-exp.1',
},
{
changelogContent:
'### Fixed\n\n* Fixed Multiview Render Regions feature regression.',
changelogUrl:
'https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.14/changelog/CHANGELOG.html',
isStable: true,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2025-04-18T18:06:12.036Z',
version: '1.14.3',
},
],
});
});
it(`package with repository`, async () => {
const data = `
{
"versions": {
"1.14.3": {
"repository": {
"url": "https://github.cds.internal.unity3d.com/unity/xr.sdk.openxr.git"
},
"version": "1.14.3"
},
"1.12.0-exp.1": {
"version": "1.12.0-exp.1"
}
},
"time": {
"1.14.3": "2025-04-18T18:06:12.036Z",
"1.12.0-exp.1": "2024-07-03T15:24:28.000Z"
}
}
`;
httpMock
.scope('https://packages.unity.com')
.get('/com.unity.xr.openxr')
.reply(200, data);
const res = await getPkgReleases({
datasource: Unity3dPackagesDatasource.id,
packageName: 'com.unity.xr.openxr',
registryUrls: [],
});
expect(res).toStrictEqual({
registryUrl: 'https://packages.unity.com',
releases: [
{
changelogContent: undefined,
changelogUrl: undefined,
isStable: false,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2024-07-03T15:24:28.000Z',
version: '1.12.0-exp.1',
},
{
changelogContent: undefined,
changelogUrl: undefined,
isStable: true,
registryUrl: 'https://packages.unity.com',
releaseTimestamp: '2025-04-18T18:06:12.036Z',
version: '1.14.3',
},
],
sourceUrl:
'https://github.cds.internal.unity3d.com/unity/xr.sdk.openxr.git',
});
});
});