blob: 43bdda6044300d03ded203fd135e343906f05564 [file] [log] [blame]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var log4js = require("log4js");
var mock = require("mock-require");
var os = require("os");
var test = require("tape");
var readFileCallback = [undefined, new Buffer("")];
mock("fs", {
readFile: function (filename, callback) {
filename = filename;
return callback(undefined, readFileCallback[1]);
}
});
var configuration_1 = require("../../shared/configuration");
var project_1 = require("../../shared/project");
var bundle_item_1 = require("../bundle-item");
var transformer_1 = require("../transformer");
var source_reader_1 = require("./source-reader");
var configuration = new configuration_1.Configuration({});
var project = new project_1.Project(configuration, log4js.getLogger("project"));
var transformer = new transformer_1.Transformer(configuration, project);
var sourceReader = new source_reader_1.SourceReader(configuration, log4js.getLogger("sourceReader"), transformer);
var karmaTypescriptConfig = {
bundlerOptions: {
ignore: ["ignored"],
noParse: ["noparse"]
}
};
var karma = {};
karma.karmaTypescriptConfig = karmaTypescriptConfig;
configuration.initialize(karma);
test("source-reader should return an empty object literal for ignored modules", function (t) {
t.plan(1);
var bundleItem = new bundle_item_1.BundleItem("ignored", "ignored.js");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, "module.exports={};");
});
});
test("source-reader should read source for module", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer("var x;")];
var bundleItem = new bundle_item_1.BundleItem("dummy", "dummy.js");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, "var x;");
});
});
test("source-reader should create an AST", function (t) {
t.plan(1);
var bundleItem = new bundle_item_1.BundleItem("dummy", "dummy.js");
sourceReader.read(bundleItem, function () {
t.notEqual(bundleItem.ast, undefined);
});
});
test("source-reader should create an empty dummy AST for non-script files (css, JSON...)", function (t) {
t.plan(1);
var bundleItem = new bundle_item_1.BundleItem("style", "style.css");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.ast, undefined);
});
});
test("source-reader should create an empty dummy AST for modules specified in the bundler option 'noParse'", function (t) {
t.plan(1);
var bundleItem = new bundle_item_1.BundleItem("noparse", "noparse.js");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.ast, undefined);
});
});
test("source-reader should prepend JSON source with 'module.exports ='", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer(JSON.stringify([1, 2, 3, "a", "b", "c"]))];
var bundleItem = new bundle_item_1.BundleItem("json", "json.json");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, os.EOL + "module.exports = [1,2,3,\"a\",\"b\",\"c\"];");
});
});
test("source-reader should prepend stylesheet source (original CSS) with 'module.exports ='", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer(".color { color: red; }")];
var bundleItem = new bundle_item_1.BundleItem("style", "style.css");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, os.EOL + "module.exports = \".color { color: red; }\";");
});
});
test("source-reader should prepend transformed stylesheet source (now JSON) with 'module.exports ='", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer(JSON.stringify({ color: "_color_xkpkl_5" }))];
var bundleItem = new bundle_item_1.BundleItem("transformed", "transformed.css");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, os.EOL + "module.exports = {\"color\":\"_color_xkpkl_5\"};");
});
});
test("source-reader should not prepend redundant 'module.exports ='", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer("module.exports = '';")];
var bundleItem = new bundle_item_1.BundleItem("redundant", "redundant.css");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, "module.exports = '';");
});
});
test("source-reader should prepend 'module.exports =' to valid javascript with non-script extension, css", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer("{ color: '_color_xkpkl_5'; }")];
var bundleItem = new bundle_item_1.BundleItem("valid-js", "valid-js.css");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, os.EOL + "module.exports = \"{ color: \'_color_xkpkl_5\'; }\";");
});
});
test("source-reader should prepend 'module.exports =' to valid javascript with non-script extension, txt", function (t) {
t.plan(1);
readFileCallback = [undefined, new Buffer("(function() {return {foo: 'baz',bork: true}})();")];
var bundleItem = new bundle_item_1.BundleItem("valid-js", "valid-js.txt");
sourceReader.read(bundleItem, function () {
t.equal(bundleItem.source, os.EOL + "module.exports = \"(function() {return {foo: \'baz\',bork: true}})();\";");
});
});
//# sourceMappingURL=source-reader.spec.js.map