c9-core/plugins/c9.vfs.client/vfs_test.js

106 wiersze
3.5 KiB
JavaScript

/*global describe it before beforeEach*/
"use client";
require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) {
var expect = chai.expect;
expect.setupArchitectTest([
{
packagePath: "plugins/c9.core/c9",
startdate: new Date(),
debug: 2,
hosted: true,
local: false
},
"plugins/c9.core/http-xhr",
"plugins/c9.core/ext",
{
packagePath: "plugins/c9.vfs.client/vfs_client",
debug: true
},
"plugins/c9.vfs.client/endpoint",
"plugins/c9.ide.auth/auth",
//Mock Plugins
{
consumes: ["Plugin"],
provides: ["auth.bootstrap", "info", "dialog.error", "api", "dialog.alert"],
setup: expect.html.mocked
},
{
consumes: ["vfs", "c9"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var vfs = imports.vfs;
var c9 = imports.c9;
describe('vfs', function() {
this.timeout(20000);
beforeEach(function(done) {
if (vfs.connected)
return done();
vfs.once("connect", done);
});
it("should handle calls across away/back boundary", function(done) {
vfs.readdir("/", {}, function(err, meta) {
if (err) throw err;
meta.stream.destroy();
done();
});
// Disconnect to force away state
vfs.connection.socket.close();
});
it("should handle calls during away", function(done) {
vfs.connection.socket.close();
vfs.readdir("/", {}, function(err, meta) {
if (err) throw err;
meta.stream.destroy();
done();
});
});
it("should keep state over away/back boundary", function(done) {
var path = "/testwatch.txt";
vfs.copy("/file.txt", {to: path, overwrite: true}, function(err) {
if (err) throw err;
vfs.watch(path, {}, function(err, meta) {
if (err) throw err;
meta.watcher.on("change", function (event, filename) {
if (event == "delete" && filename == path.substr(1)) {
done();
vfs.off("back", onBack);
}
});
meta.watcher.on("error", function(err) {
throw err;
});
c9.once("back", onBack);
function onBack() {
vfs.rmfile(path, {}, function(err) {
if (err) throw err;
});
}
setTimeout(function() {
vfs.connection.socket.close();
}, 200);
});
});
});
});
onload && onload();
}
});