react / wstein / node_modules / jest-cli / src / HasteModuleLoader / __tests__ / HasteModuleLoader-requireModuleOrMock-test.js
80679 views/**1* Copyright (c) 2014, Facebook, Inc. All rights reserved.2*3* This source code is licensed under the BSD-style license found in the4* LICENSE file in the root directory of this source tree. An additional grant5* of patent rights can be found in the PATENTS file in the same directory.6*/7'use strict';89jest.autoMockOff();1011var path = require('path');12var q = require('q');13var utils = require('../../lib/utils');1415describe('HasteModuleLoader', function() {16var HasteModuleLoader;17var mockEnvironment;18var resourceMap;1920var CONFIG = utils.normalizeConfig({21name: 'HasteModuleLoader-tests',22rootDir: path.resolve(__dirname, 'test_root')23});2425function buildLoader() {26if (!resourceMap) {27return HasteModuleLoader.loadResourceMap(CONFIG).then(function(map) {28resourceMap = map;29return buildLoader();30});31} else {32return q(new HasteModuleLoader(CONFIG, mockEnvironment, resourceMap));33}34}3536beforeEach(function() {37HasteModuleLoader = require('../HasteModuleLoader');3839mockEnvironment = {40global: {41console: {},42mockClearTimers: jest.genMockFn()43},44runSourceText: jest.genMockFn().mockImplementation(function(codeStr) {45/* jshint evil:true */46return (new Function('return ' + codeStr))();47})48};49});5051describe('requireModuleOrMock', function() {52pit('mocks modules by default', function() {53return buildLoader().then(function(loader) {54var exports = loader.requireModuleOrMock(null, 'RegularModule');55expect(exports.setModuleStateValue._isMockFunction).toBe(true);56});57});5859pit('doesnt mock modules when explicitly dontMock()ed', function() {60return buildLoader().then(function(loader) {61loader.requireModuleOrMock(null, 'jest-runtime')62.dontMock('RegularModule');63var exports = loader.requireModuleOrMock(null, 'RegularModule');64expect(exports.isRealModule).toBe(true);65});66});6768pit('doesnt mock modules when explicitly dontMock()ed via a different ' +69'denormalized module name', function() {70return buildLoader().then(function(loader) {71loader.requireModuleOrMock(__filename, 'jest-runtime')72.dontMock('./test_root/RegularModule');73var exports = loader.requireModuleOrMock(__filename, 'RegularModule');74expect(exports.isRealModule).toBe(true);75});76});7778pit('doesnt mock modules when autoMockOff() has been called', function() {79return buildLoader().then(function(loader) {80loader.requireModuleOrMock(null, 'jest-runtime').autoMockOff();81var exports = loader.requireModuleOrMock(null, 'RegularModule');82expect(exports.isRealModule).toBe(true);83});84});8586pit('uses manual mock when automocking on and mock is avail', function() {87return buildLoader().then(function(loader) {88var exports = loader.requireModuleOrMock(null, 'ManuallyMocked');89expect(exports.isManualMockModule).toBe(true);90});91});9293pit('does not use manual mock when automocking is off and a real ' +94'module is available', function() {95return buildLoader().then(function(loader) {96loader.requireModuleOrMock(__filename, 'jest-runtime').autoMockOff();97var exports = loader.requireModuleOrMock(__filename, 'ManuallyMocked');98expect(exports.isManualMockModule).toBe(false);99});100});101});102});103104105