@coon-js/extjs-comp-navport
Version:
NPM package providing enhanced viewport template for rapid, modular, package agnostic Sencha ExtJS application building.
135 lines (98 loc) • 4.93 kB
JavaScript
/**
* 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.
*/
import initAppTest, {appConfig} from "../../lib/AppTestHelper.js";
StartTest((t) => {
var viewport;
initAppTest(t, {
navigation: [{
route: "myRoute",
text: "my route"
}, {
route: "myRoute1",
text: "my route 1"
}]
}).then(t => {
t.chain({
action: function (next) {
t.it("Should properly process requests to empty hash", (t) => {
console.warn("Adding custom hash so test processes properly");
// browser not firing hashchange if this is not set by hand
// might be n issue with the iframe the test runs in
Ext.util.History.add("");
var app = Ext.create("coon.comp.app.Application", {
name: "check",
mainView: "coon.navport.view.NavigationViewport",
controllers: [
"coon.navport.app.PackageController"
]
});
viewport = app.getMainView();
var pg, pg2 = null;
console.warn("Adding custom hash so test processes properly");
// browser not firing hashchange if this is not set by hand
// might be n issue with the iframe the test runs in
Ext.util.History.add("");
viewport.addPostLaunchInfo(appConfig.postLaunchInfo);
pg = Ext.ComponentQuery.query("cn_navport-pg404");
t.expect(pg).toBeTruthy();
t.expect(pg.length).toBe(0);
if (pg.length === 0) {
Ext.util.History.add("foobar");
t.waitForMs(t.parent.TIMEOUT, () => {
pg = Ext.ComponentQuery.query("cn_navport-pg404");
t.expect(pg).toBeTruthy();
t.expect(pg.length).toBe(1);
if (pg.length) {
t.expect(pg[0] instanceof coon.navport.view.pages.Page404).toBe(true);
}
Ext.util.History.add("");
t.waitForMs(t.parent.TIMEOUT, () => {
pg2 = Ext.ComponentQuery.query("cn_navport-pg404");
t.expect(pg2).toBeTruthy();
t.expect(pg2.length).toBe(0);
Ext.util.History.add("snafu");
t.waitForMs(t.parent.TIMEOUT, () => {
pg2 = Ext.ComponentQuery.query("cn_navport-pg404");
t.expect(pg2).toBeTruthy();
t.expect(pg2.length).toBe(1);
Ext.util.History.add("#");
t.waitForMs(t.parent.TIMEOUT, () => {
pg2 = Ext.ComponentQuery.query("cn_navport-pg404");
t.expect(pg2).toBeTruthy();
t.expect(pg2.length).toBe(0);
app.destroy();
app = null;
});
});
});
});
} else {
app.destroy();
app = null;
}
});
}});
});
});