Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80668 views
1
/**
2
* Copyright (c) 2014, Facebook, Inc. All rights reserved.
3
*
4
* This source code is licensed under the BSD-style license found in the
5
* LICENSE file in the root directory of this source tree. An additional grant
6
* of patent rights can be found in the PATENTS file in the same directory.
7
*/
8
'use strict';
9
10
jest.autoMockOff();
11
12
var path = require('path');
13
var q = require('q');
14
var utils = require('../../lib/utils');
15
16
describe('HasteModuleLoader', function() {
17
var HasteModuleLoader;
18
var mockEnvironment;
19
var resourceMap;
20
21
var CONFIG = utils.normalizeConfig({
22
name: 'HasteModuleLoader-tests',
23
rootDir: path.resolve(__dirname, 'test_root')
24
});
25
26
function buildLoader() {
27
if (!resourceMap) {
28
return HasteModuleLoader.loadResourceMap(CONFIG).then(function(map) {
29
resourceMap = map;
30
return buildLoader();
31
});
32
} else {
33
return q(new HasteModuleLoader(CONFIG, mockEnvironment, resourceMap));
34
}
35
}
36
37
beforeEach(function() {
38
HasteModuleLoader = require('../HasteModuleLoader');
39
40
mockEnvironment = {
41
global: {
42
console: {},
43
mockClearTimers: jest.genMockFn()
44
},
45
runSourceText: jest.genMockFn().mockImplementation(function(codeStr) {
46
/* jshint evil:true */
47
return (new Function('return ' + codeStr))();
48
})
49
};
50
});
51
52
describe('requireModuleOrMock', function() {
53
pit('mocks modules by default', function() {
54
return buildLoader().then(function(loader) {
55
var exports = loader.requireModuleOrMock(null, 'RegularModule');
56
expect(exports.setModuleStateValue._isMockFunction).toBe(true);
57
});
58
});
59
60
pit('doesnt mock modules when explicitly dontMock()ed', function() {
61
return buildLoader().then(function(loader) {
62
loader.requireModuleOrMock(null, 'jest-runtime')
63
.dontMock('RegularModule');
64
var exports = loader.requireModuleOrMock(null, 'RegularModule');
65
expect(exports.isRealModule).toBe(true);
66
});
67
});
68
69
pit('doesnt mock modules when explicitly dontMock()ed via a different ' +
70
'denormalized module name', function() {
71
return buildLoader().then(function(loader) {
72
loader.requireModuleOrMock(__filename, 'jest-runtime')
73
.dontMock('./test_root/RegularModule');
74
var exports = loader.requireModuleOrMock(__filename, 'RegularModule');
75
expect(exports.isRealModule).toBe(true);
76
});
77
});
78
79
pit('doesnt mock modules when autoMockOff() has been called', function() {
80
return buildLoader().then(function(loader) {
81
loader.requireModuleOrMock(null, 'jest-runtime').autoMockOff();
82
var exports = loader.requireModuleOrMock(null, 'RegularModule');
83
expect(exports.isRealModule).toBe(true);
84
});
85
});
86
87
pit('uses manual mock when automocking on and mock is avail', function() {
88
return buildLoader().then(function(loader) {
89
var exports = loader.requireModuleOrMock(null, 'ManuallyMocked');
90
expect(exports.isManualMockModule).toBe(true);
91
});
92
});
93
94
pit('does not use manual mock when automocking is off and a real ' +
95
'module is available', function() {
96
return buildLoader().then(function(loader) {
97
loader.requireModuleOrMock(__filename, 'jest-runtime').autoMockOff();
98
var exports = loader.requireModuleOrMock(__filename, 'ManuallyMocked');
99
expect(exports.isManualMockModule).toBe(false);
100
});
101
});
102
});
103
});
104
105