/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/dalek/test/dalek.test.js
103 строки
3 KB
sadick254
Update stub usage
22 сен 2020, 18:17
22 сен 2020, 18:17
809303b
Код
Авторство
О чём код?
/** @babel */ const assert = require('assert'); const fs = require('fs'); const sinon = require('sinon'); const path = require('path'); const dalek = require('../lib/dalek'); describe('dalek', function() { describe('enumerate', function() { let availablePackages = {}; let realPaths = {}; let bundledPackages = []; let packageDirPaths = []; let sandbox = null; beforeEach(function() { availablePackages = { 'an-unduplicated-installed-package': path.join( 'Users', 'username', '.atom', 'packages', 'an-unduplicated-installed-package' ), 'duplicated-package': path.join( 'Users', 'username', '.atom', 'packages', 'duplicated-package' ), 'unduplicated-package': path.join( `${atom.getLoadSettings().resourcePath}`, 'node_modules', 'unduplicated-package' ) }; atom.devMode = false; bundledPackages = ['duplicated-package', 'unduplicated-package']; packageDirPaths = [path.join('Users', 'username', '.atom', 'packages')]; sandbox = sinon.createSandbox(); sandbox .stub(dalek, 'realpath') .callsFake(filePath => Promise.resolve(realPaths[filePath] || filePath) ); sandbox.stub(atom.packages, 'isBundledPackage').callsFake(packageName => { return bundledPackages.includes(packageName); }); sandbox .stub(atom.packages, 'getAvailablePackageNames') .callsFake(() => Object.keys(availablePackages)); sandbox.stub(atom.packages, 'getPackageDirPaths').callsFake(() => { return packageDirPaths; }); sandbox.stub(fs, 'existsSync').callsFake(candidate => { return ( Object.values(availablePackages).includes(candidate) && !candidate.includes(atom.getLoadSettings().resourcePath) ); }); }); afterEach(function() { sandbox.restore(); }); it('returns a list of duplicate names', async function() { assert.deepEqual(await dalek.enumerate(), ['duplicated-package']); }); describe('when in dev mode', function() { beforeEach(function() { atom.devMode = true; }); it('always returns an empty list', async function() { assert.deepEqual(await dalek.enumerate(), []); }); }); describe('when a package is symlinked into the package directory', async function() { beforeEach(function() { const realPath = path.join('Users', 'username', 'duplicated-package'); const packagePath = path.join( 'Users', 'username', '.atom', 'packages', 'duplicated-package' ); realPaths[packagePath] = realPath; }); it('is not included in the list of duplicate names', async function() { assert.deepEqual(await dalek.enumerate(), []); }); }); }); });