"use strict"; require("../__util__/test-init"); const chai = require("chai"); chai.config.includeStack = true; require("chai").should(); const expect = require("chai").expect; var nodeRequire = require("../../node-require"); function testNodeRequireInstall(options, expected) { let requireObj = { extensions: {}, }; options.require = requireObj; nodeRequire.install(options); for (let i = 0; i < expected.length; i++) { let ext = expected[i]; expect(requireObj.extensions[ext]).to.be.a("function"); } expected.sort(); var actualKeys = Object.keys(requireObj.extensions).sort(); expect(expected).to.deep.equal(actualKeys); } describe("node-require", function () { it("should consolidate using both extension and extensions", function () { testNodeRequireInstall( { extension: ".marko.xml", extensions: [".marko", ".html"], }, [".marko.xml", ".marko", ".html"], ); }); it("should consolidate using only extensions", function () { testNodeRequireInstall( { extensions: [".marko", ".html"], }, [".marko", ".html"], ); }); it("should consolidate using only extension", function () { testNodeRequireInstall( { extension: ".marko.xml", }, [".marko.xml"], ); }); it("should consolidate using extension and empty array of extensions", function () { testNodeRequireInstall( { extension: ".marko.xml", extensions: [], }, [".marko.xml"], ); }); it("should consolidate with .marko when neither extension or extensions provided", function () { testNodeRequireInstall({}, [".marko"]); }); it("should insert missing period into extensions", function () { testNodeRequireInstall( { extension: "marko.xml", extensions: ["html"], }, [".marko.xml", ".html"], ); }); });