react / wstein / node_modules / jest-cli / node_modules / node-haste / __tests__ / ResourceMapSerializer-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('ResourceMapSerializer', function() {19var ResourceMapSerializer = require('../lib/ResourceMapSerializer');20var ResourceMap = require('../lib/ResourceMap');21var JS = require('../lib/resource/JS');22var CSS = require('../lib/resource/CSS');23var JSLoader = require('../lib/loader/JSLoader');24var JSTestLoader = require('../lib/loader/JSTestLoader');25var CSSLoader = require('../lib/loader/CSSLoader');2627it('should serialize resource map with a single object', function() {28var loaders = [new JSTestLoader(), new JSLoader(), new CSSLoader()];29var serializer = new ResourceMapSerializer(loaders);30var map = new ResourceMap([31JS.fromObject({32path: 'a/b.js',33id: 'b',34requiredModules: ['foo', 'bar']35})36]);3738var map2 = serializer.fromObject(serializer.toObject(map));39expect(map2.getAllResources().length).toBe(1);40expect(map2.getResource('JS', 'b').requiredModules).toEqual(['foo', 'bar']);41});4243it('should serialize resource map with multiple objects', function() {44var loaders = [new JSTestLoader(), new JSLoader(), new CSSLoader()];45var serializer = new ResourceMapSerializer(loaders);46var map = new ResourceMap([47JS.fromObject({48path: 'a/b.js',49id: 'b',50requiredModules: ['foo', 'bar']51}),52CSS.fromObject({53path: 'a/b.css',54id: 'b-css'55})56]);5758var map2 = serializer.fromObject(serializer.toObject(map));59expect(map2.getAllResources().length).toBe(2);60expect(map2.getResource('JS', 'b') instanceof JS).toBe(true, 'JS');61expect(map2.getResource('CSS', 'b-css') instanceof CSS).toBe(true, 'CSS');62});6364it('should serialize to a file', function() {65var fs = require('fs');66var data = null;67spyOn(fs, 'writeFile').andCallFake(function(path, d, enc, callback) {68data = d;69callback();70});71spyOn(fs, 'readFile').andCallFake(function(path, enc, callback) {72callback(null, data);73});74var loaders = [new JSTestLoader(), new JSLoader(), new CSSLoader()];75var serializer = new ResourceMapSerializer(loaders);76var map = new ResourceMap([77JS.fromObject({78path: 'a/b.js',79id: 'b',80requiredModules: ['foo', 'bar']81})82]);8384var map2 = null;85runs(function() {86serializer.storeToPath('tmp', map, function() {87serializer.loadFromPath('tmp', function(err, m) {88map2 = m;89});90});91});9293waitsFor(function() {94return map2;95}, 100);9697runs(function() {98expect(fs.writeFile).toHaveBeenCalled();99expect(fs.readFile).toHaveBeenCalled();100expect(map2.getAllResources().length).toBe(1);101expect(map2.getResource('JS', 'b').requiredModules)102.toEqual(['foo', 'bar']);103});104});105106it('should return null when version changes', function() {107var loaders = [new JSTestLoader(), new JSLoader(), new CSSLoader()];108var serializer1 = new ResourceMapSerializer(loaders, { version: '0.1' });109var serializer2 = new ResourceMapSerializer(loaders, { version: '0.2' });110var map = new ResourceMap([111JS.fromObject({112path: 'a/b.js',113id: 'b',114requiredModules: ['foo', 'bar']115}),116CSS.fromObject({117path: 'a/b.css',118id: 'b-css'119})120]);121122var ser = serializer1.toObject(map);123var map2 = serializer2.fromObject(ser);124expect(map2).toBe(null);125});126});127128129