react / wstein / node_modules / jest-cli / src / HasteModuleLoader / __tests__ / HasteModuleLoader-hasDependency-test.js
80668 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();1011describe('nodeHasteModuleLoader', function() {12var HasteModuleLoader;13var mockEnvironment;14var resources;15var mockConfig = {16coverageCollector: '../IstanbulCollector'17};1819var mockResourceMap = {20getResource: function(type, name) {21if (!resources.hasOwnProperty(name)) {22return undefined;23}24return resources[name];25}26};2728function _generateResource(name, deps) {29deps = deps || [];30var resource = {31path: '/path/to/' + name + '.js',32id: name,33_requiredModuleMap: deps.reduce(function(prev, next) {34return prev[next] = true;35}, {})36};37if (deps.length) {38resource.requiredModules = deps;39}40return resource;41}4243beforeEach(function() {44HasteModuleLoader = require('../HasteModuleLoader');4546mockEnvironment = {47global: {48console: {},49mockClearTimers: jest.genMockFn()50},51runSourceText: jest.genMockFn().mockImplementation(function(codeStr) {52/* jshint evil: true */53return (new Function('return ' + codeStr))();54})55};56resources = {};57});5859describe('hasDependency', function() {60it('properly calculates direct 1-way dependencies', function() {61resources.ModuleA = _generateResource('ModuleA', ['ModuleB']);62resources.ModuleB = _generateResource('ModuleB');6364var loader = new HasteModuleLoader(mockConfig,65mockEnvironment, mockResourceMap);66var mockModules = loader.requireModule(__filename, 'mock-modules');67expect(mockModules.hasDependency('ModuleA', 'ModuleB')).toBe(true);68expect(mockModules.hasDependency('ModuleB', 'ModuleA')).toBe(false);69});7071it('properly calculates direct cyclic dependencies', function() {72resources.ModuleA = _generateResource('ModuleA', ['ModuleB']);73resources.ModuleB = _generateResource('ModuleB', ['ModuleA']);7475var loader = new HasteModuleLoader(mockConfig,76mockEnvironment, mockResourceMap);77var mockModules = loader.requireModule(__filename, 'mock-modules');78expect(mockModules.hasDependency('ModuleA', 'ModuleB')).toBe(true);79expect(mockModules.hasDependency('ModuleB', 'ModuleA')).toBe(true);80});8182it('properly calculates indirect 1-way dependencies', function() {83resources.ModuleA = _generateResource('ModuleA', ['ModuleB']);84resources.ModuleB = _generateResource('ModuleB', ['ModuleC']);85resources.ModuleC = _generateResource('ModuleC');8687var loader = new HasteModuleLoader(mockConfig,88mockEnvironment, mockResourceMap);89var mockModules = loader.requireModule(__filename, 'mock-modules');90expect(mockModules.hasDependency('ModuleA', 'ModuleC')).toBe(true);91});9293it('properly calculates indirect cyclic dependencies', function() {94resources.ModuleA = _generateResource('ModuleA', ['ModuleB']);95resources.ModuleB = _generateResource('ModuleB', ['ModuleC']);96resources.ModuleC = _generateResource('ModuleC', ['ModuleA']);9798var loader = new HasteModuleLoader(mockConfig,99mockEnvironment, mockResourceMap);100var mockModules = loader.requireModule(__filename, 'mock-modules');101expect(mockModules.hasDependency('ModuleA', 'ModuleC')).toBe(true);102expect(mockModules.hasDependency('ModuleC', 'ModuleA')).toBe(true);103});104});105});106107108