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

153 wiersze
5.2 KiB
JavaScript

/*global describe:false, it:false */
require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) {
"use client";
var expect = chai.expect;
expect.setupArchitectTest([
"plugins/c9.core/ext",
"plugins/c9.ide.ui/ui",
"plugins/c9.core/util",
"plugins/c9.ide.ui/lib_apf",
"plugins/c9.ide.editors/editor",
"plugins/c9.ide.clipboard/clipboard",
"plugins/c9.ide.clipboard/html5",
"plugins/c9.ide.editors/document",
"plugins/c9.ide.editors/undomanager",
// Mock plugins
{
consumes: [],
provides: ["c9"],
setup: expect.html.mocked
},
{
consumes: ["apf", "ui", "Plugin"],
provides: [
"commands", "menus", "layout", "settings", "dialog.alert",
"dialog.error"
],
setup: expect.html.mocked
},
{
consumes: ["Editor", "Document"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var Editor = imports.Editor;
var Document = imports.Document;
describe('editor', function() {
it('should load it\'s state from the constructor', function(done) {
var exts = ["js", "txt"];
var editor = new Editor("Ajax.org", [], exts);
expect(editor.fileExtensions).to.equal(exts);
done();
});
it('should emit document event and connect state get/setters with those of editor', function(done) {
var exts = ["js", "txt"];
var editor = new Editor("Ajax.org", [], exts);
var doc = new Document();
editor.type = "test";
editor.name = "test1";
var count = 0;
editor.on("documentLoad", function(e) {
expect(e.doc).to.equal(doc);
count++;
});
editor.on("documentActivate", function(e) {
expect(e.doc).to.equal(doc);
count++;
});
editor.on("documentUnload", function(e) {
expect(e.doc).to.equal(doc);
count++;
});
doc.on("setState", function(e) {
count++;
});
doc.on("getState", function(e) {
count++;
});
editor.on("setState", function(e) {
expect(e.state).property("x").to.equal(1);
count++;
});
editor.on("getState", function(e) {
e.state.x = 1;
count++;
});
editor.loadDocument(doc);
var state = doc.getState();
doc.setState(state);
editor.loadDocument(doc);
doc.unload();
if (count != 8) {
throw new Error("Not all events where called: "
+ count + " of 8");
}
expect(state).property("test").property("x").to.equal(1);
done();
});
it('should emit clear when clearing the editor', function(done) {
var editor = new Editor();
editor.on("clear", function(e){ done(); })
editor.clear();
});
it('should emit focus when focussing the editor', function(done) {
var editor = new Editor();
editor.on("focus", function(e){ done(); })
editor.focus();
});
it('should emit validate when validating the editor', function(done) {
var editor = new Editor();
editor.on("validate", function(e) {
expect(e.document).to.equal(1);
done();
})
editor.isValid(1);
});
it('should attach itself to a pane element', function(done) {
var editor = new Editor();
var count = 0;
editor.on("draw", function(e) {
e.tab.on("DOMNodeRemovedFromDocument", function(){
if (count != 2)
throw new Error("Not all events where called: "
+ count);
done();
})
count++;
});
var pane = {
aml: {insertBefore: function(){ count++ },
getPage: function(){}},
on: function(){}
}
editor.attachTo(pane);
editor.load("test");
editor.unload();
});
});
onload && onload();
}
});