webpack/test/buildDeps_test.js

83 lines
3.9 KiB
JavaScript

/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var vows = require("vows");
var assert = require("assert");
var path = require("path");
var buildDeps = require("../lib/buildDeps");
vows.describe("buildDeps").addBatch({
"main1": {
topic: function() {
buildDeps(path.join(__dirname, "fixtures"), "./main1.js", this.callback);
},
"all modules loaded": function(depTree) {
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "main1.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "b.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "node_modules", "m1", "a.js")], null);
},
"one chunk": function(depTree) {
assert.deepEqual(Object.keys(depTree.chunks), ["main"]);
for(var i in depTree.modulesById) {
assert.deepEqual(depTree.modulesById[i].chunks, ["main"]);
}
}
},
"main2": {
topic: function() {
buildDeps(path.join(__dirname, "fixtures"), "./main2.js", {}, this.callback);
},
"all modules loaded": function(depTree) {
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "main2.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "b.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "node_modules", "m1", "a.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "node_modules", "m1", "b.js")], null);
},
"two chunks": function(depTree) {
assert.deepEqual(Object.keys(depTree.chunks), ["1", "main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "main2.js")].chunks, ["main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")].chunks, ["main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "b.js")].chunks, ["main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "node_modules", "m1", "a.js")].chunks, ["1"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "node_modules", "m1", "b.js")].chunks, ["1"]);
}
},
"main3": {
topic: function() {
buildDeps(path.join(__dirname, "fixtures"), "./main3.js", {}, this.callback);
},
"all modules loaded": function(depTree) {
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "main3.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")], null);
assert.notEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "c.js")], null);
},
"two chunks": function(depTree) {
assert.deepEqual(Object.keys(depTree.chunks), ["1", "main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "main3.js")].chunks, ["main"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")].chunks, ["main", "1"]);
assert.deepEqual(depTree.modulesByFile[path.join(__dirname, "fixtures", "c.js")].chunks, ["1"]);
var main3id = ""+depTree.modulesByFile[path.join(__dirname, "fixtures", "main3.js")].id;
var aid = ""+depTree.modulesByFile[path.join(__dirname, "fixtures", "a.js")].id;
var cid = ""+depTree.modulesByFile[path.join(__dirname, "fixtures", "c.js")].id;
assert.deepEqual(Object.keys(depTree.chunks.main.modules), [main3id, aid]);
assert.deepEqual(Object.keys(depTree.chunks["1"].modules), [cid, aid]);
assert.deepEqual(depTree.chunks.main.modules[main3id], "include");
assert.deepEqual(depTree.chunks.main.modules[aid], "include");
assert.deepEqual(depTree.chunks["1"].modules[aid], "in-parent");
assert.deepEqual(depTree.chunks["1"].modules[cid], "include");
}
}
}).export(module);