Files
cnpmcore/test/core/service/BugVersionService/fixPackageBugVersion.test.ts
fengmk2 4427a4fca5 feat: use egg v4 (#747)
BREAKING CHANGE: only support egg >= 4.0.0

the first app on egg v4

https://github.com/eggjs/egg/issues/3644
2025-02-09 15:43:24 +08:00

206 lines
11 KiB
TypeScript

import { strict as assert } from 'node:assert';
import { app, mock } from '@eggjs/mock/bootstrap';
import { TestUtil } from '../../../../test/TestUtil';
import { BugVersionService } from '../../../../app/core/service/BugVersionService';
import { DistRepository } from '../../../../app/repository/DistRepository';
import { PackageRepository } from '../../../../app/repository/PackageRepository';
import { BugVersion } from '../../../../app/core/entity/BugVersion';
import { Package } from '../../../../app/core/entity/Package';
import { PackageVersion } from '../../../../app/core/entity/PackageVersion';
import { Dist } from '../../../../app/core/entity/Dist';
describe('test/core/service/BugVersionService/fixPackageBugVersion.test.ts', () => {
let bugVersionService: BugVersionService;
let bugVersion: BugVersion;
let distRepository: DistRepository;
let packageRepository: PackageRepository;
beforeEach(async () => {
bugVersionService = await app.getEggObject(BugVersionService);
distRepository = await app.getEggObject(DistRepository);
packageRepository = await app.getEggObject(PackageRepository);
bugVersion = new BugVersion({
faker: {
'6.6.6': {
version: '5.5.3',
reason: 'Please use https://github.com/MilosPaunovic/community-faker instead',
},
},
colors: {
'1.4.44-liberty-2': {
version: '1.4.0',
reason: 'https://github.com/Marak/colors.js/issues/285',
},
'1.4.1': {
version: '1.4.0',
reason: 'https://github.com/Marak/colors.js/issues/285',
},
'1.4.2': {
version: '1.4.0',
reason: 'https://github.com/Marak/colors.js/issues/289',
},
'1.4.3': {
version: '199.0.0',
reason: 'https://github.com/Marak/colors.js/issues/289',
},
},
});
mock(distRepository, 'findPackageVersionManifest', async (_, version) => {
if (version !== '199.0.0') {
return {
name: 'colors',
version: '1.4.0',
devDependencies: {
eslint: '^5.2.0',
'eslint-config-google': '^0.11.0',
},
dist: {
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==',
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78',
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.0.tgz',
fileCount: 21,
unpackedSize: 39506,
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
},
engines: {
node: '>=0.1.90',
},
};
}
});
mock(packageRepository, 'findPackage', async () => {
return new Package({
updatedAt: new Date(),
createdAt: new Date(),
scope: '',
name: 'colors',
packageId: '0',
isPrivate: false,
description: '',
});
});
mock(packageRepository, 'findPackageVersion', async () => {
const dist = new Dist({
updatedAt: new Date(),
createdAt: new Date(),
distId: '0',
name: 'mock_dist',
path: 'mock_dist',
size: 0,
shasum: 'mock_shasum',
integrity: 'mock_integrity',
});
return new PackageVersion({
updatedAt: new Date(),
createdAt: new Date(),
packageId: '0',
packageVersionId: '0',
version: '1.0.0',
abbreviatedDist: dist,
manifestDist: dist,
tarDist: dist,
readmeDist: dist,
publishTime: new Date(),
paddingVersion: null,
isPreRelease: null,
});
});
});
afterEach(async () => {
mock.restore();
await TestUtil.truncateDatabase();
});
it('should fix all bug versions with advice', async () => {
const manifest = {
name: 'colors',
version: '1.4.2',
devDependencies: {
eslint: '^5.2.0',
'eslint-config-google': '^0.11.0',
},
dist: {
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
fileCount: 21,
unpackedSize: 39506,
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
},
engines: {
node: '>=0.1.90',
},
};
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
assert.deepStrictEqual(newManifest, {
name: 'colors',
version: '1.4.2',
deprecated: '[WARNING] Use 1.4.0 instead of 1.4.2, reason: https://github.com/Marak/colors.js/issues/289',
devDependencies: {
eslint: '^5.2.0',
'eslint-config-google': '^0.11.0',
},
dist: {
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==',
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78',
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.0.tgz',
fileCount: 21,
unpackedSize: 39506,
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
},
engines: {
node: '>=0.1.90',
},
});
});
it('should should not fix if not a bug version', async () => {
const manifest = {
name: 'colors',
version: '99.4.2',
devDependencies: {
eslint: '^5.2.0',
'eslint-config-google': '^0.11.0',
},
dist: {
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
fileCount: 21,
unpackedSize: 39506,
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
},
engines: {
node: '>=0.1.90',
},
};
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
assert(newManifest === manifest);
});
it('should should not fix if fixed version not exits', async () => {
const manifest = {
name: 'colors',
version: '1.4.3',
devDependencies: {
eslint: '^5.2.0',
'eslint-config-google': '^0.11.0',
},
dist: {
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
fileCount: 21,
unpackedSize: 39506,
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
},
engines: {
node: '>=0.1.90',
},
};
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
assert(newManifest === manifest);
});
});