"use strict"; const expect = require("chai").expect; const TestUtil = require("../../util"); let packages; describe("packages", function() { let originalLogInfo; beforeEach(function() { originalLogInfo = log.info; log.info = () => {}; delete require.cache[require.resolve("../../../src/plugins/packages")]; packages = require("../../../src/plugins/packages"); }); afterEach(function() { log.info = originalLogInfo; }); describe(".getStylesheets", function() { it("should contain no stylesheets before packages are loaded", function() { expect(packages.getStylesheets()).to.be.empty; }); it("should return the list of registered stylesheets for loaded packages", function() { packages.loadPackages(); expect(packages.getStylesheets()).to.deep.equal([ "thelounge-package-foo/style.css", ]); }); }); describe(".getPackage", function() { it("should contain no reference to packages before loading them", function() { expect(packages.getPackage("thelounge-package-foo")).to.be.undefined; }); it("should return details of a registered package after it was loaded", function() { packages.loadPackages(); expect(packages.getPackage("thelounge-package-foo")) .to.have.key("onServerStart"); }); }); describe(".loadPackages", function() { it("should display report about loading packages", function() { // Mock `log.info` to extract its effect into a string let stdout = ""; log.info = TestUtil.mockLogger((str) => stdout += str); packages.loadPackages(); expect(stdout).to.deep.equal("Package thelounge-package-foo loaded\n"); }); }); });