2017-01-06 10:47:08 +00:00
|
|
|
/*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();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-12-13 20:17:16 +00:00
|
|
|
register();
|
2017-01-06 10:47:08 +00:00
|
|
|
}
|
|
|
|
});
|