blob: e3b697b9c87c0428ea3a0b59cf1fe4e958109592 [file] [log] [blame]
{"version":3,"file":"source-reader.spec.js","sourceRoot":"","sources":["../../../src/bundler/resolve/source-reader.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as log4js from \"log4js\";\nimport * as mock from \"mock-require\";\nimport * as os from \"os\";\nimport * as test from \"tape\";\n\nlet readFileCallback = [undefined, new Buffer(\"\")];\n\nmock(\"fs\", {\n readFile: (filename: string, callback: (error: Error, buffer: Buffer) => void) => {\n filename = filename;\n return callback(undefined, readFileCallback[1]);\n }\n});\n\nimport { ConfigOptions } from \"karma\";\n\nimport { KarmaTypescriptConfig } from \"../../api/configuration\";\nimport { Configuration } from \"../../shared/configuration\";\nimport { Project } from \"../../shared/project\";\nimport { BundleItem } from \"../bundle-item\";\nimport { Transformer } from \"../transformer\";\nimport { SourceReader } from \"./source-reader\";\n\nconst configuration = new Configuration({});\nconst project = new Project(configuration, log4js.getLogger(\"project\"));\nconst transformer = new Transformer(configuration, project);\nconst sourceReader = new SourceReader(configuration, log4js.getLogger(\"sourceReader\"), transformer);\n\nconst karmaTypescriptConfig: KarmaTypescriptConfig = {\n bundlerOptions: {\n ignore: [\"ignored\"],\n noParse: [\"noparse\"]\n }\n};\n\nconst karma: ConfigOptions = {};\n(karma as any).karmaTypescriptConfig = karmaTypescriptConfig;\n\nconfiguration.initialize(karma);\n\ntest(\"source-reader should return an empty object literal for ignored modules\", (t) => {\n\n t.plan(1);\n\n const bundleItem = new BundleItem(\"ignored\", \"ignored.js\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, \"module.exports={};\");\n });\n});\n\ntest(\"source-reader should read source for module\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(\"var x;\")];\n const bundleItem = new BundleItem(\"dummy\", \"dummy.js\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, \"var x;\");\n });\n});\n\ntest(\"source-reader should create an AST\", (t) => {\n\n t.plan(1);\n\n const bundleItem = new BundleItem(\"dummy\", \"dummy.js\");\n\n sourceReader.read(bundleItem, () => {\n t.notEqual(bundleItem.ast, undefined);\n });\n});\n\ntest(\"source-reader should create an empty dummy AST for non-script files (css, JSON...)\", (t) => {\n\n t.plan(1);\n\n const bundleItem = new BundleItem(\"style\", \"style.css\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.ast, undefined);\n });\n});\n\ntest(\"source-reader should create an empty dummy AST for modules specified in the bundler option 'noParse'\", (t) => {\n\n t.plan(1);\n\n const bundleItem = new BundleItem(\"noparse\", \"noparse.js\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.ast, undefined);\n });\n});\n\ntest(\"source-reader should prepend JSON source with 'module.exports ='\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(JSON.stringify([1, 2, 3, \"a\", \"b\", \"c\"]))];\n const bundleItem = new BundleItem(\"json\", \"json.json\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, os.EOL + \"module.exports = [1,2,3,\\\"a\\\",\\\"b\\\",\\\"c\\\"];\");\n });\n});\n\ntest(\"source-reader should prepend stylesheet source (original CSS) with 'module.exports ='\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(\".color { color: red; }\")];\n const bundleItem = new BundleItem(\"style\", \"style.css\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, os.EOL + \"module.exports = \\\".color { color: red; }\\\";\");\n });\n});\n\ntest(\"source-reader should prepend transformed stylesheet source (now JSON) with 'module.exports ='\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(JSON.stringify({ color: \"_color_xkpkl_5\" }))];\n const bundleItem = new BundleItem(\"transformed\", \"transformed.css\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, os.EOL + \"module.exports = {\\\"color\\\":\\\"_color_xkpkl_5\\\"};\");\n });\n});\n\ntest(\"source-reader should not prepend redundant 'module.exports ='\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(\"module.exports = '';\")];\n const bundleItem = new BundleItem(\"redundant\", \"redundant.css\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, \"module.exports = '';\");\n });\n});\n\ntest(\"source-reader should prepend 'module.exports =' to valid javascript with non-script extension, css\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(\"{ color: '_color_xkpkl_5'; }\")];\n const bundleItem = new BundleItem(\"valid-js\", \"valid-js.css\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, os.EOL + \"module.exports = \\\"{ color: \\'_color_xkpkl_5\\'; }\\\";\");\n });\n});\n\ntest(\"source-reader should prepend 'module.exports =' to valid javascript with non-script extension, txt\", (t) => {\n\n t.plan(1);\n\n readFileCallback = [undefined, new Buffer(\"(function() {return {foo: 'baz',bork: true}})();\")];\n const bundleItem = new BundleItem(\"valid-js\", \"valid-js.txt\");\n\n sourceReader.read(bundleItem, () => {\n t.equal(bundleItem.source, os.EOL + \"module.exports = \\\"(function() {return {foo: \\'baz\\',bork: true}})();\\\";\");\n });\n});\n"]}