Files
pnpm/packages/package-store/test/index.ts
2021-07-04 19:35:53 +03:00

79 lines
2.6 KiB
TypeScript

/// <reference path="../../../typings/index.d.ts"/>
import path from 'path'
import createClient from '@pnpm/client'
import createStore from '@pnpm/package-store'
import tempy from 'tempy'
describe('store.importPackage()', () => {
it('selects import method automatically', async () => {
const tmp = tempy.directory()
const storeDir = path.join(tmp, 'store')
const registry = 'https://registry.npmjs.org/'
const authConfig = { registry }
const { resolve, fetchers } = createClient({
authConfig,
cacheDir: path.join(tmp, 'cache'),
})
const storeController = await createStore(resolve, fetchers, {
storeDir,
verifyStoreIntegrity: true,
})
const pkgId = 'registry.npmjs.org/is-positive/1.0.0'
const fetchResponse = storeController.fetchPackage({
force: false,
lockfileDir: tempy.directory(),
pkg: {
id: pkgId,
resolution: {
integrity: 'sha1-iACYVrZKLx632LsBeUGEJK4EUss=',
registry: 'https://registry.npmjs.org/',
tarball: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
},
},
})
const importTo = tempy.directory()
const { importMethod } = await storeController.importPackage(importTo, {
filesResponse: await fetchResponse.files(),
force: false,
})
expect(typeof importMethod).toBe('string')
expect(typeof (await import(importTo)).default).toBe('function')
})
it('uses copying', async () => {
const tmp = tempy.directory()
const storeDir = path.join(tmp, 'store')
const registry = 'https://registry.npmjs.org/'
const authConfig = { registry }
const { resolve, fetchers } = createClient({
authConfig,
cacheDir: path.join(tmp, 'cache'),
})
const storeController = await createStore(resolve, fetchers, {
packageImportMethod: 'copy',
storeDir,
verifyStoreIntegrity: true,
})
const pkgId = 'registry.npmjs.org/is-positive/1.0.0'
const fetchResponse = storeController.fetchPackage({
force: false,
lockfileDir: tempy.directory(),
pkg: {
id: pkgId,
resolution: {
integrity: 'sha1-iACYVrZKLx632LsBeUGEJK4EUss=',
registry: 'https://registry.npmjs.org/',
tarball: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
},
},
})
const importTo = tempy.directory()
const { importMethod } = await storeController.importPackage(importTo, {
filesResponse: await fetchResponse.files(),
force: false,
})
expect(importMethod).toBe('copy')
expect(typeof (await import(importTo)).default).toBe('function')
})
})