c9-core/plugins/c9.ide.editors/tab_test.js

118 wiersze
4.1 KiB
JavaScript

/*global describe:false, it:false */
"use client";
require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) {
var expect = chai.expect;
expect.setupArchitectTest([
"plugins/c9.core/ext",
"plugins/c9.core/util",
"plugins/c9.ide.dialog/dialog",
"plugins/c9.ide.dialog.common/alert",
"plugins/c9.ide.dialog.common/alert_internal",
"plugins/c9.ide.ui/ui",
"plugins/c9.ide.ui/lib_apf",
"plugins/c9.ide.editors/tab",
"plugins/c9.ide.editors/document",
"plugins/c9.ide.ui/focus",
"plugins/c9.ide.editors/undomanager",
{
consumes: ["Tab", "ui", "Document"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var Tab = imports.Tab;
var Document = imports.Document;
var ui = imports.ui;
var page1, page2;
var pane = {};
pane.aml = {
cloud9pane: pane,
setAttribute: function() {},
getPages: function() { return [page1, page2]; },
getPage: function() { return pane.active.aml; },
set: function(tab) {pane.active = tab.cloud9tab;},
localName: "tab",
insertBefore: function() {
if (this.oninsert) this.oninsert();
}
};
// @todo all these tests for tabs without a path
describe('tab', function() {
it('should load it\'s state from the constructor', function(done) {
page1 = new Tab({
editorType: "test",
document: {
value: "test",
title: "test",
tooltip: "test"
},
path: "test/test/test.txt",
pane: pane,
init: true,
active: true
});
expect(page1.document.value, "docvalue").to.equal("test");
expect(page1.document.changed).to.equal(false);
expect(page1.path).to.equal("test/test/test.txt");
expect(page1.editorType).to.equal("test");
expect(page1.title, "title").to.equal("test");
expect(page1.tooltip, "tooltip").to.equal("test");
done();
});
it('should set changed to true when a change occurs', function(done) {
page1.document.undoManager.add({ undo: function() {}, redo: function() {} });
expect(page1.document.changed).to.equal(true);
done();
});
it('should be able to bind itself to a pane', function(done) {
page2 = new Tab({
editorType: "test",
document: { value: "test" },
path: "test/test/test.txt"
});
pane.aml.oninsert = function() {
done();
pane.aml.oninsert = null;
};
page2.attachTo(pane);
});
it('should be able to set itself active', function(done) {
page2.activate();
expect(pane.active).to.equal(page2);
done();
});
it('should emit getState when calling getState', function(done) {
page2.on("getState", function(e) {
expect(e.state.active).to.equal(true);
done();
});
page2.getState();
});
it('should destroy all ui elements when it is unloaded', function(done) {
page1.unload();
page2.unload();
expect(page1.aml.$amlDestroyed).to.ok;
expect(page2.aml.$amlDestroyed).to.ok;
done();
});
});
register();
}
});