UNPKG

fid-umd

Version:

Easily add UMD to your JavaScripts so they can be loaded with CommonJS, AMD (RequireJS), Rhino, node.js, module.js, in the browser and everywhere else.

305 lines (285 loc) 9.94 kB
/** * Tests confirming FidUmd operates as expected */ "use strict"; var Config; Config = require("./config"); describe("Config", function () { describe("constructor", function () { it("constructs with \"new\"", function () { var config; config = new Config(); expect(config instanceof Config).toBe(true); }); it("constructs without \"new\"", function () { var config, configConstructor; configConstructor = Config; config = configConstructor(); expect(config instanceof Config).toBe(true); }); }); describe("instance", function () { var config; beforeEach(function () { config = new Config(); }); describe("initially", function () { it("has required properties", function () { expect(config.debug).toBe(false); expect(config.depends).toEqual([]); expect(config.functionsNeeded).toEqual({}); expect(config.global).toBe(false); expect(config.globalVariables).toEqual({}); expect(config.jslint).toBe(false); expect(config.name).toBe("Unknown"); }); }); describe("dependsProperty()", function () { it("works with no depends", function () { expect(config.dependsProperty("name")).toEqual([]); }); it("returns the correct property", function () { config.depends = [ { name: "name1", sven: "sven1" }, { name: "name2", sven: "sven2" } ]; expect(config.dependsProperty("sven")).toEqual([ "sven1", "sven2" ]); }); it("returns undefined when appropriate", function () { config.depends = [ { name: "name1" }, { name: "name2" } ]; /* eslint no-undefined:off */ expect(config.dependsProperty("Name")).toEqual([ undefined, undefined ]); }); }); describe("expandDepends()", function () { it("parses a name", function () { var result; result = config.expandDepends("SomeName"); expect(result).toEqual({ amd: "SomeName", commonjs: "SomeName", commonjsmod: "", modulejs: "SomeName", name: "SomeName", nodejs: "SomeName", root: "SomeName", yui: "SomeName" }); }); it("defaults name to Unknown", function () { var result; result = config.expandDepends({}); expect(result).toEqual({ amd: "Unknown", commonjs: "Unknown", commonjsmod: "", modulejs: "Unknown", name: "Unknown", nodejs: "Unknown", root: "Unknown", yui: "Unknown" }); }); it("defaults everything to name", function () { var result; result = config.expandDepends({ name: "Elephant" }); expect(result).toEqual({ amd: "Elephant", commonjs: "Elephant", commonjsmod: "", modulejs: "Elephant", name: "Elephant", nodejs: "Elephant", root: "Elephant", yui: "Elephant" }); }); it("filters out invalid properties", function () { var result; result = config.expandDepends({ name: "Elephant", garbage: true, joiner: ", " }); expect(result).toEqual({ amd: "Elephant", commonjs: "Elephant", commonjsmod: "", modulejs: "Elephant", name: "Elephant", nodejs: "Elephant", root: "Elephant", yui: "Elephant" }); }); it("preserves all good properties", function () { var obj, result; obj = { amd: "AMD", commonjs: "CommonJS", commonjsmod: "CommonJSMod", modulejs: "ModuleJS", name: "Name", nodejs: "NodeJS", root: "Root", yui: "YUI" }; result = config.expandDepends(obj); expect(result).toEqual(obj); }); }); describe("exportConfig()", function () { beforeEach(function () { spyOn(config, "unexpandDepends").and.callFake(function (input) { return input; }); }); it("preserves only known keys", function () { var result; config.twinkle = "twinkle"; config.name = "TestModule"; config.jslint = true; config.depends = [ "one", "two" ]; result = config.exportConfig(); result = JSON.parse(result); expect(result).toEqual({ jslint: 1, depends: [ "one", "two" ], name: "TestModule" }); }); it("condenses values", function () { var result; config.debug = true; config.name = ""; result = config.exportConfig(); result = JSON.parse(result); expect(result).toEqual({ debug: 1 }); }); }); describe("loadConfig()", function () { /** * Ensures everything in the expected object exists in the config. * * @param {Object} expected */ function compareProperties(expected) { Object.keys(expected).forEach(function (key) { expect(config[key]).toEqual(expected[key]); }); } beforeEach(function () { spyOn(config, "expandDepends").and.callFake(function (input) { return input; }); }); it("sets good defaults", function () { config.loadConfig({}); compareProperties({ debug: false, depends: [], global: false, jslint: false, name: "Unknown" }); }); it("uses existing values", function () { config.loadConfig({ debug: true, depends: [ "one", "two" ], jslint: true, name: "Waffle" }); compareProperties({ debug: true, depends: [ "one", "two" ], global: false, jslint: true, name: "Waffle" }); }); }); describe("unexpandDepends()", function () { it("can keep all values that are unique", function () { var obj, result; obj = { amd: "AMD", commonjs: "CommonJS", commonjsmod: "CommonJSMod", modulejs: "ModuleJS", name: "Name", nodejs: "NodeJS", root: "Root", yui: "YUI" }; result = config.unexpandDepends(obj); expect(result).toEqual(obj); }); it("removes properties that match \"name\"", function () { var result; result = config.unexpandDepends({ amd: "a", commonjs: "b", modulejs: "a", name: "a", nodejs: "a", root: "b", yui: "a" }); expect(result).toEqual({ commonjs: "b", name: "a", root: "b" }); }); it("consolidates an object to a string if they all match \"name\"", function () { var result; result = config.unexpandDepends({ amd: "a", commonjs: "a", name: "a", modulejs: "a", nodejs: "a", root: "a", yui: "a" }); expect(result).toEqual("a"); }); }); }); });