diff --git a/packages/jest-resolve/src/__mocks__/userResolver.js b/packages/jest-resolve/src/__mocks__/userResolver.js new file mode 100644 index 000000000000..de5816379e86 --- /dev/null +++ b/packages/jest-resolve/src/__mocks__/userResolver.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. +*/ + +'use strict'; + +module.exports = function userResolver(path, options) { + return 'module'; +}; diff --git a/packages/jest-resolve/src/__test__/resolve-test.js b/packages/jest-resolve/src/__tests__/resolve-test.js similarity index 57% rename from packages/jest-resolve/src/__test__/resolve-test.js rename to packages/jest-resolve/src/__tests__/resolve-test.js index 2ee2826fe3eb..13d261bbe6de 100644 --- a/packages/jest-resolve/src/__test__/resolve-test.js +++ b/packages/jest-resolve/src/__tests__/resolve-test.js @@ -10,6 +10,7 @@ 'use strict'; +const path = require('path'); const ModuleMap = require('jest-haste-map').ModuleMap; const Resolver = require('../'); @@ -37,3 +38,34 @@ describe('isCoreModule', () => { expect(isCore).toEqual(false); }); }); + +describe('findNodeModule', () => { + it('is possible to override the default resolver', () => { + const nodePaths = process.env.NODE_PATH + ? process.env.NODE_PATH.split(path.delimiter) + : null; + + jest.mock('../__mocks__/userResolver'); + const userResolver = require('../__mocks__/userResolver'); + userResolver.mockImplementation(() => 'module'); + + const newPath = Resolver.findNodeModule('test', { + basedir: '/', + browser: true, + extensions: ['js'], + moduleDirectory: ['node_modules'], + paths: ['/something'], + resolver: require.resolve('../__mocks__/userResolver'), + }); + + expect(newPath).toBe('module'); + expect(userResolver.mock.calls[0][0]).toBe('test'); + expect(userResolver.mock.calls[0][1]).toEqual({ + basedir: '/', + browser: true, + extensions: ['js'], + moduleDirectory: ['node_modules'], + paths: (nodePaths || []).concat(['/something']), + }); + }); +});