diff --git a/test/unit/@node-red/editor-api/lib/editor/theme_spec.js b/test/unit/@node-red/editor-api/lib/editor/theme_spec.js index 62d2b10fd..b7f3e62ec 100644 --- a/test/unit/@node-red/editor-api/lib/editor/theme_spec.js +++ b/test/unit/@node-red/editor-api/lib/editor/theme_spec.js @@ -26,46 +26,52 @@ var NR_TEST_UTILS = require("nr-test-utils"); var theme = NR_TEST_UTILS.require("@node-red/editor-api/lib/editor/theme"); -describe("api/editor/theme", function() { - beforeEach(function() { - sinon.stub(fs,"statSync",function() { return true; }); +describe("api/editor/theme", function () { + beforeEach(function () { + sinon.stub(fs, "statSync", function () { return true; }); }); - afterEach(function() { - theme.init({settings:{}}); + afterEach(function () { + theme.init({settings: {}}); fs.statSync.restore(); }); - it("applies the default theme", function() { + it("applies the default theme", function () { var result = theme.init({}); should.not.exist(result); var context = theme.context(); context.should.have.a.property("page"); - context.page.should.have.a.property("title","Node-RED"); - context.page.should.have.a.property("favicon","favicon.ico"); + context.page.should.have.a.property("title", "Node-RED"); + context.page.should.have.a.property("favicon", "favicon.ico"); + context.page.should.have.a.property("tabicon", "red/images/node-red-icon-black.svg"); context.should.have.a.property("header"); - context.header.should.have.a.property("title","Node-RED"); - context.header.should.have.a.property("image","red/images/node-red.png"); + context.header.should.have.a.property("title", "Node-RED"); + context.header.should.have.a.property("image", "red/images/node-red.png"); + context.should.have.a.property("asset"); + context.asset.should.have.a.property("red", "red/red.min.js"); + context.asset.should.have.a.property("main", "red/main.min.js"); should.not.exist(theme.settings()); }); - it("picks up custom theme", function() { + it("picks up custom theme", function () { theme.init({ editorTheme: { page: { title: "Test Page Title", - favicon: "/absolute/path/to/theme/icon", + favicon: "/absolute/path/to/theme/favicon", + tabicon: "/absolute/path/to/theme/tabicon", css: "/absolute/path/to/custom/css/file.css", scripts: "/absolute/path/to/script.js" }, header: { title: "Test Header Title", + url: "http://nodered.org", image: "/absolute/path/to/header/image" // or null to remove image }, deployButton: { - type:"simple", - label:"Save", + type: "simple", + label: "Save", icon: "/absolute/path/to/deploy/button/image" // or null to remove image }, @@ -83,6 +89,16 @@ describe("api/editor/theme", function() { login: { image: "/absolute/path/to/login/page/big/image" // a 256x256 image + }, + + palette: { + editable: true, + catalogues: ['https://catalogue.nodered.org/catalogue.json'], + theme: [{ category: ".*", type: ".*", color: "#f0f" }] + }, + + projects: { + enabled: false } } }); @@ -91,22 +107,40 @@ describe("api/editor/theme", function() { var context = theme.context(); context.should.have.a.property("page"); - context.page.should.have.a.property("title","Test Page Title"); + context.page.should.have.a.property("title", "Test Page Title"); + context.page.should.have.a.property("favicon", "theme/favicon/favicon"); + context.page.should.have.a.property("tabicon", "theme/tabicon/tabicon"); context.should.have.a.property("header"); - context.header.should.have.a.property("title","Test Header Title"); + context.header.should.have.a.property("title", "Test Header Title"); + context.header.should.have.a.property("url", "http://nodered.org"); + context.header.should.have.a.property("image", "theme/header/image"); context.page.should.have.a.property("css"); context.page.css.should.have.lengthOf(1); context.page.css[0].should.eql('theme/css/file.css'); - context.page.should.have.a.property("scripts"); context.page.scripts.should.have.lengthOf(1); context.page.scripts[0].should.eql('theme/scripts/script.js'); + context.should.have.a.property("login"); + context.login.should.have.a.property("image", "theme/login/image"); var settings = theme.settings(); settings.should.have.a.property("deployButton"); + settings.deployButton.should.have.a.property("type", "simple"); + settings.deployButton.should.have.a.property("label", "Save"); + settings.deployButton.should.have.a.property("icon", "theme/deploy/image"); settings.should.have.a.property("userMenu"); + settings.userMenu.should.be.eql(false); settings.should.have.a.property("menu"); - + settings.menu.should.have.a.property("menu-item-import-library", false); + settings.menu.should.have.a.property("menu-item-export-library", false); + settings.menu.should.have.a.property("menu-item-keyboard-shortcuts", false); + settings.menu.should.have.a.property("menu-item-help", { label: "Alternative Help Link Text", url: "http://example.com" }); + settings.should.have.a.property("palette"); + settings.palette.should.have.a.property("editable", true); + settings.palette.should.have.a.property("catalogues", ['https://catalogue.nodered.org/catalogue.json']); + settings.palette.should.have.a.property("theme", [{ category: ".*", type: ".*", color: "#f0f" }]); + settings.should.have.a.property("projects"); + settings.projects.should.have.a.property("enabled", false); }); });