react / wstein / node_modules / jest-cli / node_modules / node-haste / __tests__ / AnalyzeChangedTask-test.js
80668 views/**1* Copyright 2013 Facebook, Inc.2*3* Licensed under the Apache License, Version 2.0 (the "License");4* you may not use this file except in compliance with the License.5* You may obtain a copy of the License at6*7* http://www.apache.org/licenses/LICENSE-2.08*9* Unless required by applicable law or agreed to in writing, software10* distributed under the License is distributed on an "AS IS" BASIS,11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12* See the License for the specific language governing permissions and13* limitations under the License.14*15* @emails [email protected] [email protected]16*/1718describe('AnalyzeChangedTask', function() {1920var AnalyzeChangedTask = require('../lib/AnalyzeChangedTask');21var ConfigurationTrie = require('../lib/ConfigurationTrie');22var loaders = require('../lib/loaders');23var ProjectConfiguration = require('../lib/resource/ProjectConfiguration');24describe('serialize', function() {2526it('should serialize loaders', function() {27var task = new AnalyzeChangedTask(28[29new loaders.JSLoader({30extractSpecialRequires: true,31networkSize: true32}),33new loaders.CSSLoader({34networkSize: true35}),36new loaders.ImageLoader(),37new loaders.ProjectConfigurationLoader(),38new loaders.ResourceLoader()39],40new ConfigurationTrie([]));4142var task2 = AnalyzeChangedTask.fromObject(task.toObject());4344expect(task2.loaders.length).toBe(5);45expect(task2.loaders[0].options).toEqual({46extractSpecialRequires: true,47networkSize: true48});49});5051it('should serialize ConfigurationTrie', function() {52var task = new AnalyzeChangedTask(53[],54new ConfigurationTrie([55new ProjectConfiguration('a/package.json', { foo: 'bar' }),56new ProjectConfiguration('b/c/package.json', {})57]));5859var task2 = AnalyzeChangedTask.fromObject(task.toObject());60expect(task2.configurationTrie.configurations.length).toBe(2);6162});63});6465describe('Loading', function() {66var path = require('path');67var waitsForCallback = require('../lib/test_helpers/waitsForCallback');68var MessageList = require('../lib/MessageList');69var Resource = require('../lib/resource/Resource');70var testData = path.join(__dirname, '..', '__test_data__', 'JS');7172it('should aggregate messages from loaders', function() {73var loader = new loaders.ResourceLoader();74var task = new AnalyzeChangedTask([loader], new ConfigurationTrie([]));75spyOn(loader, 'loadFromPath')76.andCallFake(function(path, configuration, callback) {77var messages = new MessageList();78messages.addError(path, 'foo', 'bar');79callback(messages, new Resource(path));80});8182waitsForCallback(83function(callback) {84task.run(['a/b.js', 'a/c.js'], callback);85},86function(messages) {87expect(messages.length).toBe(2);88}89);90});9192it('should load resource when changed', function() {93var loader = new loaders.ResourceLoader();94var task = new AnalyzeChangedTask([loader], new ConfigurationTrie([]));95spyOn(loader, 'loadFromPath')96.andCallFake(function(path, configuration, callback) {97expect(path).toBe('sub/added.js');98expect(configuration).toBe(undefined);99callback(new MessageList(), new Resource('sub/added.js'));100});101102waitsForCallback(103function(callback) {104task.run(['sub/added.js'], callback);105},106function() {}107);108});109110it('should load resource with matching configuration', function() {111var loader = new loaders.ResourceLoader();112var config = new ProjectConfiguration('sub/project.json', {});113var task = new AnalyzeChangedTask(114[loader],115new ConfigurationTrie([config]));116spyOn(loader, 'loadFromPath')117.andCallFake(function(path, configuration, callback) {118expect(path).toBe('sub/added.js');119expect(configuration).toBe(config);120callback(new MessageList(), new Resource('sub/added.js'));121});122123waitsForCallback(124function(callback) {125task.run(['sub/added.js'], callback);126},127function() {}128);129});130131it('should load resource in a subprocess', function() {132var loader = new loaders.JSLoader();133var task = new AnalyzeChangedTask([loader], new ConfigurationTrie([]));134135waitsForCallback(136function(callback) {137task.runInForks(1, [path.join(testData, 'module.js')], callback);138},139function(messages, resources, skipped) {140expect(resources.length).toBe(1);141expect(resources[0])142.toEqual(jasmine.any(require('../lib/resource/JS')));143}144);145});146147it('should load resource in a subprocess with messages', function() {148var loader = new loaders.JSLoader();149var task = new AnalyzeChangedTask([loader], new ConfigurationTrie([]));150151waitsForCallback(152function(callback) {153task.runInForks(1541,155[path.join(testData, 'deprecated.js')],156callback);157},158function(messages, resources, skipped) {159expect(messages.length).toBe(1);160expect(messages.render()).toContain('@suggests is deprecated');161}162);163});164});165});166167168