c9-core/plugins/c9.ide.ace.statusbar/statusbar_test.js

184 wiersze
6.8 KiB
JavaScript

/*global describe it before after apf bar = */
"use client";
require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) {
var expect = chai.expect;
expect.setupArchitectTest([
{
packagePath: "plugins/c9.core/c9",
workspaceId: "ubuntu/ip-10-35-77-180",
startdate: new Date(),
debug: true,
hosted: true,
local: false,
davPrefix: "/"
},
"plugins/c9.core/ext",
"plugins/c9.core/http-xhr",
"plugins/c9.core/util",
"plugins/c9.ide.ui/lib_apf",
"plugins/c9.ide.ui/menus",
{
packagePath: "plugins/c9.core/settings",
testing: true
},
{
packagePath: "plugins/c9.ide.ui/ui",
staticPrefix: "plugins/c9.ide.ui"
},
"plugins/c9.ide.editors/document",
"plugins/c9.ide.editors/undomanager",
{
packagePath: "plugins/c9.ide.editors/editors",
defaultEditor: "ace"
},
"plugins/c9.ide.editors/editor",
"plugins/c9.ide.editors/tabmanager",
"plugins/c9.ide.ui/focus",
"plugins/c9.ide.editors/pane",
"plugins/c9.ide.editors/tab",
"plugins/c9.ide.ace/ace",
{
packagePath: "plugins/c9.ide.ace.statusbar/statusbar",
staticPrefix: "plugins/c9.ide.layout.classic"
},
"plugins/c9.ide.keys/commands",
"plugins/c9.fs/proc",
"plugins/c9.vfs.client/vfs_client",
"plugins/c9.vfs.client/endpoint",
"plugins/c9.ide.auth/auth",
"plugins/c9.fs/fs",
{
consumes: ["tabManager", "ace"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var tabs = imports.tabManager;
var ace = imports.ace;
function getTabHtml(tab) {
return tab.pane.aml.getPage("editor::" + tab.editorType).$ext;
}
expect.html.setConstructor(function(tab) {
if (typeof tab == "object")
return tab.$ext;
});
describe('statusbar', function() {
before(function(done) {
bar.$ext.style.background = "rgba(220, 220, 220, 0.93)";
bar.$ext.style.position = "fixed";
bar.$ext.style.left = "20px";
bar.$ext.style.right = "20px";
bar.$ext.style.bottom = "20px";
bar.$ext.style.height = "33%";
document.body.style.marginBottom = "33%";
tabs.once("ready", function() {
tabs.getPanes()[0].focus();
done();
});
});
describe("open", function() {
this.timeout(10000);
it('should open a pane with just an editor', function(done) {
tabs.openFile("/file.txt", function(err, tab) {
expect(!err);
expect(tabs.getTabs()).length(1);
// statusbar is added only after editor draw event
// TODO make this api easier to use
setTimeout(function() {
var sb = tab.document.getSession().statusBar;
var bar = sb.getElement("bar");
expect.html(bar, "rowcol").text("1:1");
tab.document.editor.ace.selectAll();
setTimeout(function() {
expect.html(bar, "rowcol sel").text("2:1");
expect.html(bar, "sel").text("23 Bytes");
done();
}, 10);
});
});
});
it('should handle multiple documents in the same pane', function(done) {
tabs.openFile("/listing.json", function(err, tab) {
expect(!err);
expect(tabs.getTabs()).length(2);
tab.activate();
setTimeout(function() {
var sb = tab.document.getSession().statusBar;
expect.html(sb.getElement("bar"), "caption").text("1:1");
done();
}, 10);
});
});
});
describe("split(), pane.unload()", function() {
it('should split a pane horizontally, making the existing pane the left one', function(done) {
var pane = tabs.focussedTab.pane;
var righttab = pane.hsplit(true);
tabs.focussedTab.attachTo(righttab);
setTimeout(function() {
expect.html(pane.aml, "pane").text("2:1");
expect.html(righttab.aml, "righttab").text("1:1");
done();
}, 100);
});
// it('should remove the left pane from a horizontal split', function(done) {
// var pane = tabs.getPanes()[0];
// var tab = tabs.getPanes()[1].getTab();
// pane.unload();
// expect(tabs.getPanes()).length(1);
// expect(tabs.getTabs()).length(2);
// tabs.focusTab(tab);
// done();
// });
});
// describe("Change Theme", function(){
// this.timeout(10000);
//
// it('should change a theme', function(done) {
// var editor = tabs.focussedTab.editor;
// ace.on("themeInit", function setTheme(){
// ace.off("theme.init", setTheme);
// expect.html(getTabHtml(tabs.focussedTab).childNodes[1]).className("ace-monokai");
// editor.setOption("theme", "ace/theme/textmate");
// done();
// });
// editor.setOption("theme", "ace/theme/monokai");
// });
// });
// @todo test split api and menu
if (!onload.remain) {
after(function(done) {
tabs.unload();
document.body.style.marginBottom = "";
done();
});
}
});
register();
}
});