c9-core/plugins/c9.ide.collab/collab_test.js

213 wiersze
6.9 KiB
JavaScript

/*global describe it before after = */
"use client";
require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"],
function (architect, chai, baseProc) {
var expect = chai.expect;
// save
document.body.appendChild(document.createElement("div"))
.setAttribute("id", "saveStatus");
expect.setupArchitectTest([
{
packagePath: "plugins/c9.core/c9",
workspaceId: "javruben/dev",
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",
{
packagePath: "plugins/c9.core/settings",
testing: true
},
{
packagePath: "plugins/c9.ide.ui/ui",
staticPrefix: "plugins/c9.ide.ui"
},
"plugins/c9.ide.ui/menus",
"plugins/c9.ide.editors/document",
"plugins/c9.ide.editors/undomanager",
"plugins/c9.ide.editors/editors",
"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",
"plugins/c9.ide.save/save",
"plugins/c9.fs/proc",
"plugins/c9.vfs.client/vfs_client",
"plugins/c9.vfs.client/endpoint",
"plugins/c9.ide.auth/auth",
"plugins/c9.core/api",
{
packagePath: "plugins/c9.fs/fs",
baseProc: baseProc
},
"plugins/c9.fs/fs.cache.xml",
{
packagePath: "plugins/c9.ide.collab/connect",
enable: true,
debug: true,
nodeBin: "node",
nodePath: "",
basePath: baseProc
},
"plugins/c9.ide.collab/collab",
"plugins/c9.ide.collab/collabpanel",
"plugins/c9.ide.collab/share/share",
"plugins/c9.ide.collab/workspace",
"plugins/c9.ide.collab/util",
{
packagePath: "plugins/c9.ide.collab/ot/document",
minDelay: 500,
maxDelay: 10000
},
{
packagePath: "plugins/c9.ide.collab/cursor_layer",
},
"plugins/c9.ide.collab/author_layer",
{
packagePath: "plugins/c9.ide.collab/timeslider/timeslider",
},
{
packagePath: "plugins/c9.ide.collab/chat/chat",
},
"plugins/c9.ide.collab/members/members_panel",
{
packagePath: "plugins/c9.ide.collab/members/members",
},
{
consumes: ["fs", "tabManager", "save",
"collab.connect", "collab.workspace", "collab", "OTDocument",
"members", "chat", "timeslider"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var save = imports.save;
var fs = imports.fs;
var tabs = imports.tabManager;
var connect = imports["collab.connect"];
var workspace = imports["collab.workspace"];
var collab = imports.collab;
var OTDocument = imports.OTDocument;
var members = imports.members;
var chat = imports.chat;
var timeslider = imports.timeslider;
describe('collab', function() {
this.timeout(5000);
var filePath = "/collab1.txt";
before(function(done) {
setTimeout(function() {
fs.writeFile(filePath, filePath, function() {
tabs.openFile(filePath, function() {
done();
});
});
}, 100);
});
after(function(done) {
fs.unlink(filePath, function() {
done();
});
});
describe('test collab', function() {
it('should connect', function(done) {
connect.on("connect", function(msg) {
expect(connect.connected).to.be.true;
expect(collab.connected).to.be.true;
expect(Object.keys(workspace.users)).length(1);
expect(workspace.users).to.contain.keys("1");
expect(workspace.users["1"].fullname).to.equal("John Doe");
done();
});
});
it('should be able to join a document', function(done) {
var doc = collab.getDocument(filePath);
doc.on("joined", function(e) {
expect(e.err).to.be.an('undefined');
expect(e.contents).to.equal(filePath);
done();
});
});
it('should edit and save a file', function(done) {
var doc = collab.getDocument(filePath);
var editorDoc = doc.session.doc;
var tab = tabs.focussedTab;
editorDoc.insert({ row: 0, column: 2 }, "-abc-");
expect(tab.document.value).to.equal("/c-abc-ollab1.txt");
doc.on("saved", function(e) {
expect(e.err).to.be.an('undefined');
expect(e.star).to.be.true;
expect(e.clean).to.be.true;
expect(e.revision.author).to.equal(1);
expect(e.revision.operation).to.deep.equal(["r2", "i-abc-", "r10"]);
});
save.save(tab, null, function() {
// expect(tab.document.changed).to.be.false;
done();
});
});
});
describe('test timeslider and revisions', function() {
before(function(done) {
timeslider.show();
done();
});
after(function(done) {
timeslider.hide();
done();
});
it('should load revisions', function(done) {
var doc = collab.getDocument(filePath);
doc.on("revisions", function(e) {
console.log(e.revisions);
timeslider.show();
done();
});
doc.loadRevisions();
});
});
describe('test members panel', function() {
it('should show members panel', function(done) {
collab.show();
done();
});
});
});
if (onload)
onload();
}
});