UNPKG

fuse-box

Version:

Fuse-Box a bundler that does it right

231 lines (207 loc) • 7.46 kB
import {createEnv} from "./stubs/TestEnvironment"; import {should} from "fuse-test-runner"; export class DynamicModulesTest { "Should access a dynamic module (without ext)"() { return createEnv({ project: { files: { "hello.js": `module.exports = require("./stuff/boo");` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.dynamic("stuff/boo.js", "module.exports = {hello : 'dynamic'}"); should(fuse.import("./hello")) .deepEqual({hello: "dynamic"}); }); } "Should access a dynamic module (with ext)"() { return createEnv({ project: { files: { "hello.js": `module.exports = require("./stuff/boo.js");` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.dynamic("stuff/boo.js", "module.exports = {hello : 'dynamic'}"); should(fuse.import("./hello")) .deepEqual({hello: "dynamic"}); }); } "Should access a dynamic module with tilde (with ext)"() { return createEnv({ project: { files: { "hello.js": `module.exports = require("~/stuff/boo.js");` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.dynamic("stuff/boo.js", "module.exports = {hello : 'dynamic'}"); should(fuse.import("./hello")) .deepEqual({hello: "dynamic"}); }); } "Should access a dynamic module with tilde (without ext)"() { return createEnv({ project: { files: { "hello.js": `module.exports = require("~/stuff/boo");` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.dynamic("stuff/boo.js", "module.exports = {hello : 'dynamic'}"); should(fuse.import("./hello")).deepEqual({hello: "dynamic"}); }); } "Dynamic module should have access to the scope (with ext)"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "exports.itworks = require('../foo.js')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index"); should(fuse.import("./hello/world")) .deepEqual({ "itworks": { "foo": "bar" } }); }); } "Dynamic module should have access to the scope (without ext)"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "exports.itworks = require('../foo')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index"); should(fuse.import("./hello/world")) .deepEqual({ "itworks": { "foo": "bar" } }); }); } "Dynamic module should have access to the scope using tilde (without ext)"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "module.exports = require('~/foo')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); should(fuse.import("./hello/world.js")) .deepEqual({foo: "bar"}); }); } "Dynamic module should have access to the scope using tilde (with ext)"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "module.exports = require('~/foo.js')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); should(fuse.import("./hello/world.js")) .deepEqual({foo: "bar"}); }); } "Dynamic module can be overridden"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "module.exports = require('~/foo.js')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); fuse.dynamic("hello/world.js", "module.exports = {'yes' : true}"); should(fuse.import("./hello/world.js")) .deepEqual({yes: true}); }); } "FuseBox.exists should return true on dynamic module"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic("hello/world.js", "module.exports = require('~/foo.js')")`, "foo.js": `module.exports = {foo : "bar"}` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); should(fuse.exists("./hello/world.js")) .equal(true); }); } "FuseBox.exists should not throw if module is not found"() { return createEnv({ project: { files: {"index.js": ``}, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); should(fuse.exists("app.html")) .equal(false); }); } "Should register a module in a different package"() { return createEnv({ project: { files: { "index.js": ` FuseBox.dynamic( "hello/world.js", "module.exports = {hello : 'world'}", {pkg : 'foo'} )` }, instructions: "**/*.js", }, }).then((result) => { const fuse = result.project.FuseBox; fuse.import("./index.js"); should(fuse.import("foo/hello/world")) .deepEqual({hello: "world"}); }); } }