Files
pnpm/pkg-manager/plugin-commands-installation/test/updateWorkspaceDependencies.test.ts

86 lines
2.0 KiB
TypeScript

import { type PnpmError } from '@pnpm/error'
import { type ProjectRootDir } from '@pnpm/types'
import {
createWorkspaceSpecs,
updateToWorkspacePackagesFromManifest,
} from '../lib/updateWorkspaceDependencies.js'
const INCLUDE_ALL = {
dependencies: true,
devDependencies: true,
optionalDependencies: true,
}
const WORKSPACE_PACKAGES = new Map([
['bar', new Map([
['100.0.0', {
rootDir: '' as ProjectRootDir,
manifest: {
name: 'foo',
version: '100.0.0',
},
}],
])],
['foo', new Map([
['100.0.0', {
rootDir: '' as ProjectRootDir,
manifest: {
name: 'foo',
version: '100.0.0',
},
}],
])],
['qar', new Map([
['100.0.0', {
rootDir: '' as ProjectRootDir,
manifest: {
name: 'foo',
version: '100.0.0',
},
}],
])],
])
test('updateToWorkspacePackagesFromManifest()', () => {
const manifest = {
dependencies: {
alpha: '1.0.0',
foo: '1.0.0',
},
devDependencies: {
bar: '1.0.0',
betta: '1.0.0',
},
optionalDependencies: {
hamma: '1.0.0', // cspell:disable-line
qar: '1.0.0',
},
}
expect(updateToWorkspacePackagesFromManifest(
manifest,
INCLUDE_ALL,
WORKSPACE_PACKAGES
)).toStrictEqual(['bar@workspace:*', 'foo@workspace:*', 'qar@workspace:*'])
expect(updateToWorkspacePackagesFromManifest(
manifest,
{
dependencies: true,
devDependencies: false,
optionalDependencies: false,
},
WORKSPACE_PACKAGES
)).toStrictEqual(['foo@workspace:*'])
})
test('createWorkspaceSpecs', () => {
expect(createWorkspaceSpecs(['bar', 'foo@2', 'qar@workspace:3'], WORKSPACE_PACKAGES)).toStrictEqual(['bar@workspace:*', 'foo@workspace:2', 'qar@workspace:3'])
let err!: PnpmError
try {
createWorkspaceSpecs(['express'], WORKSPACE_PACKAGES)
} catch (_err: any) { // eslint-disable-line
err = _err
}
expect(err.code).toBe('ERR_PNPM_WORKSPACE_PACKAGE_NOT_FOUND')
expect(err.message).toBe('"express" not found in the workspace')
})