UNPKG

@coon-js/extjs-comp-navport

Version:

NPM package providing enhanced viewport template for rapid, modular, package agnostic Sencha ExtJS application building.

252 lines (199 loc) 8.44 kB
/** * coon.js * extjs-comp-navport * Copyright (C) 2017-2021 Thorsten Suckow-Homberg https://github.com/coon-js/extjs-comp-navport * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. */ StartTest((t) => { var viewportCtrl; t.afterEach(() => { if (viewportCtrl) { viewportCtrl.destroy(); viewportCtrl = null; } }); t.it("Should create the ViewportController", (t) => { viewportCtrl = Ext.create("coon.navport.view.controller.NavigationViewportController"); t.expect(viewportCtrl instanceof Ext.app.ViewController).toBe(true); t.expect(viewportCtrl.alias).toContain("controller.cn_navport-ctrl"); }); /** * coon/extjs-comp-navport/#2 */ t.it("Should test addPermaNavItem() properly", (t) => { viewportCtrl = Ext.create("coon.navport.view.controller.NavigationViewportController"); // MOCK LOOKUP() - EMPTY OBJECT // TOOLBAR var toolbar = Ext.create("coon.navport.view.NavigationToolbar"); viewportCtrl.lookup = () => { return toolbar; }; var res = viewportCtrl.addPermaNavItems([{xtype: "button", itemId: "foo"}]); t.expect(res[0]).toBe("foo"); toolbar.destroy(); toolbar = null; }); t.it("createNavigationModelFrom()", (t) => { var exc, rec, nodeNav; viewportCtrl = Ext.create( "coon.navport.view.controller.NavigationViewportController" ); exc = undefined; try{viewportCtrl.createNavigationModelFrom( {} );}catch(e){exc = e;} t.expect(exc.msg).toContain("invalid configuration"); exc = undefined; try{viewportCtrl.createNavigationModelFrom( {text: "text"} );}catch(e){exc = e;} t.expect(exc.msg).toContain("invalid configuration"); exc = undefined; try{viewportCtrl.createNavigationModelFrom( {route: "route"} );}catch(e){exc = e;} t.expect(exc.msg).toContain("invalid configuration"); [rec, nodeNav] = viewportCtrl.createNavigationModelFrom( {id: "a", text: "text", route: "route", nodeNav: [], inheritNodeNav: true, view: "myView", iconCls: "myIconCls", packageController: "MyController"} ); t.isInstanceOf(rec, "coon.navport.model.NavigationModel"); t.expect(nodeNav).toEqual({}); t.isStrict(rec.getId(), "a"); t.isStrict(rec.get("leaf"), true); t.isStrict(rec.get("text"), "text"); t.isStrict(rec.get("route"), "route"); t.isStrict(rec.get("view"), "myView"); t.isStrict(rec.get("iconCls"), "myIconCls"); t.isStrict(rec.get("inheritNodeNav"), true); t.isStrict(rec.get("packageController"), "MyController"); t.expect(rec.get("nodeNav")).toBeUndefined(); }); t.it("createNavigationModelFrom() - with child nodes", (t) => { var rec, nodeNav; viewportCtrl = Ext.create( "coon.navport.view.controller.NavigationViewportController" ); [rec, nodeNav] = viewportCtrl.createNavigationModelFrom( {id: "a", text: "text", route: "route", nodeNav: [{text: "foo"}], view: "myView", iconCls: "myIconCls", children: [{id: "b", text: "childtext", route: "childroute", nodeNav: [{text: "childfoo"}]}]} ); t.isInstanceOf(rec, "coon.navport.model.NavigationModel"); t.expect(rec.childNodes.length).toBe(1); t.expect(nodeNav).toEqual({ "a": [{text: "foo"}], "b": [{text: "childfoo"}] }); let childRec = rec.childNodes[0]; t.isStrict(childRec.get("text"), "childtext"); t.isStrict(childRec.get("route"), "childroute"); t.isInstanceOf(childRec, "coon.navport.model.NavigationModel"); t.isStrict(rec.getId(), "a"); t.isStrict(rec.get("leaf"), false); t.isStrict(rec.get("text"), "text"); t.isStrict(rec.get("route"), "route"); t.isStrict(rec.get("view"), "myView"); t.isStrict(rec.get("iconCls"), "myIconCls"); t.expect(rec.get("nodeNav")).toBeUndefined(); }); t.it("onNavigationTreeSelectionChange() - null values (extjs-comp-navport#10)", (t) => { viewportCtrl = Ext.create( "coon.navport.view.controller.NavigationViewportController" ); t.isntCalled("redirectTo", viewportCtrl); viewportCtrl.onNavigationTreeSelectionChange({}, null); }); t.it("activateNodeNavigation()", (t) => { let rec, nodeNav, getNode = function (id) { return rec.findChildBy(function (node) { if (node.getId() === id) { return true; } }, null, true); }; viewportCtrl = Ext.create( "coon.navport.view.controller.NavigationViewportController" ); viewportCtrl.lookup = () => { return { hasNodeNavigation: function (id) { if (nodeNav) { return !!nodeNav[id]; } return false; }, showNavigationForNode: function (nodeId) { } }; }; [rec, nodeNav] = viewportCtrl.createNavigationModelFrom({ text: "text", route: "route", children: [{ id: "a", text: "text_1", route: "route_1", nodeNav: [{}], children: [{ id: "id_1_2", text: "text_1_2", route: "route_1_2", inheritNodeNav: true, children: [{ id: "text_1_2_1", text: "text_1_2_1", route: "route_1_2_1" }, { id: "id_1_2_2", text: "text_1_2_2", route: "route_1_2_2", inheritNodeNav: true, children: [{ id: "id_1_2_2_1", text: "text_1_2_2_1", route: "route_1_2_2_1", children: [{ id: "id_1_2_2_1_1", text: "text_1_2_2_1_1", route: "route_1_2_2_1_1", inheritNodeNav: true }] }] }] }, { text: "text_1_3", route: "route_1_3" }] }, { nodeNav: [{}], id: "id_2", text: "text_2", route: "route_2" }] }); t.expect(viewportCtrl.activateNodeNavigation(getNode("id_1_2_2"))).toBe("a"); t.expect(viewportCtrl.activateNodeNavigation(getNode("id_1_2_1"))).toBe(null); t.expect(viewportCtrl.activateNodeNavigation(getNode("id_2"))).toBe("id_2"); t.expect(viewportCtrl.activateNodeNavigation(getNode("id_1_2_2_1_1"))).toBe(null); }); });