UNPKG

fuse-box

Version:

Fuse-Box a bundler that does it right

244 lines (226 loc) • 8.46 kB
import {createEnv} from "./stubs/TestEnvironment"; import {should} from "fuse-test-runner"; export class GenericRequireTest { "Should Case 1"() { return createEnv({ project: { files: { "index.js": `require("./foo/bar.js");`, "foo/bar.js": "module.exports = {bar : 1}", }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 1}); }); } "Should import 3 files"() { return createEnv({ project: { files: { "index.js": `exports.hello = require("./foo/bar.js");`, "foo/bar.js": "module.exports = require('./hello.js')", "foo/hello.js": "module.exports = {bar : 1}", }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 1}); }); } "Should call an entry poin"() { return createEnv({ project: { files: { "index.js": `exports.allGood = require("./foo/bar.js");`, "foo/bar.js": "module.exports = require('./hello.js')", "foo/hello.js": "module.exports = {bar : 1}", }, instructions: "> index.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 1}); }); } "Should import with extension"() { return createEnv({ project: { files: { "index.js": `module.exports = require("./foo/bar.js");`, "foo/bar.js": "module.exports = require('./hello.js')", "foo/hello.js": "module.exports = {bar : 1}", }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 1}); }); } "Should import using tilde"() { return createEnv({ project: { files: { "index.js": `module.exports = require("./foo/bar.js");`, "foo/bar.js": "module.exports = require('~/foo/hello.js')", "foo/hello.js": "module.exports = {bar : 1}", }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 1}); }); } "Should export with 'exports'"() { return createEnv({ project: { files: { "index.js": `module.exports = require("./foo/bar.js");`, "foo/bar.js": "module.exports = require('~/foo/hello.js')", "foo/hello.js": "exports.bar = 2", }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./foo/bar"); should(out).deepEqual({bar: 2}); }); } "Should cache a module"() { return createEnv({ project: { files: { "index.js": `var a = 0; a++; exports.counter = a;`, }, instructions: "**/*.js", }, }).then((result) => { let out1 = result.project.FuseBox.import("./index"); should(out1).deepEqual({counter: 1}); let out2 = result.project.FuseBox.import("./index"); should(out2).deepEqual({counter: 1}); }); } "Should require a folder"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = {bar : 10}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 10}}); }); } "Should require a folder with tilde"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("~/bar")`, "bar/index.js": `module.exports = {bar : 20}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 20}}); }); } "Should require a folder with tilde (without ext)"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("~/bar/index")`, "bar/index.js": `module.exports = {bar : 20}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 20}}); }); } "Should require a folder with tilde (with ext)"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("~/bar/index.js")`, "bar/index.js": `module.exports = {bar : 20}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 20}}); }); } "Should require a relative require statement (folder)"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("../bar")`, "bar/index.js": `module.exports = {bar : 30}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 30}}); }); } "Should require a relative require statement (file without ext)"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("../bar/index")`, "bar/index.js": `module.exports = {bar : 30}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 30}}); }); } "Should require a relative require statement (file with ext)"() { return createEnv({ project: { files: { "index.js": `exports.foo = require("./foo")`, "foo/index.js": `module.exports = require("../bar/index.js")`, "bar/index.js": `module.exports = {bar : 30}`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./index"); should(out).deepEqual({foo: {bar: 30}}); }); } "Should handle circular dependency"() { return createEnv({ project: { files: { "a.js": `exports.a = 1; require("./b");`, "b.js": `exports.b = require("./a")`, }, instructions: "**/*.js", }, }).then((result) => { const out = result.project.FuseBox.import("./b"); should(out).deepEqual({b: {a: 1}}); }); } }