core/plugins/c9.ide.language.jsonalyzer/server/jsonalyzer_server_test.js
2017-12-14 02:50:08 +04:00

133 lines
5.2 KiB
JavaScript

/*global describe it before after beforeEach*/
"use client";
require(["plugins/c9.ide.language/test_base"], function(base) {
base.setup(function(err, imports, helpers) {
var tabs = imports.tabManager;
var ace = imports.ace;
var Document = imports.Document;
var language = imports.language;
var complete = imports["language.complete"];
var chai = require("lib/chai/chai");
var expect = chai.expect;
var assert = require("assert");
describe("analysis", function() {
var tab;
var session;
var worker;
before(function(done) {
language.getWorker(function(err, result) {
worker = result;
done();
});
});
// Setup
beforeEach(function(done) {
tabs.getTabs().forEach(function(tab) {
tab.close(true);
});
// tab.close() isn't quite synchronous, wait for it :(
complete.closeCompletionBox();
setTimeout(function() {
tabs.openFile("/test_broken.sh", function(err, _tab) {
if (err) return done(err);
tab = _tab;
session = tab.document.getSession().session;
expect(session).to.not.equal(null);
setTimeout(function() {
complete.closeCompletionBox();
done();
});
});
});
});
it("shows syntax error markers for shell scripts", function beginTest(done) {
// Wait for analysis to complete
if (!session.getAnnotations().length)
return session.once("changeAnnotation", beginTest.bind(null, done));
expect(session.getAnnotations()).to.have.length(1);
done();
});
it.skip("shows syntax error markers for php scripts", function(done) {
tabs.openFile("/test_broken.php", function(err, _tab) {
tab = _tab;
tabs.focusTab(tab);
session = tab.document.getSession().session;
session.on("changeAnnotation", testAnnos);
testAnnos();
function testAnnos() {
if (!session.getAnnotations().length)
return;
session.off("changeAnnotation", testAnnos);
done();
}
});
});
it.skip("shows syntax error markers for go scripts", function(done) {
tabs.openFile("/test_broken.go", function(err, _tab) {
tab = _tab;
tabs.focusTab(tab);
session = tab.document.getSession().session;
session.on("changeAnnotation", testAnnos);
testAnnos();
function testAnnos() {
if (!session.getAnnotations().length)
return;
session.off("changeAnnotation", testAnnos);
done();
}
});
});
it.skip("shows syntax error markers for ruby scripts", function(done) {
tabs.openFile("/test_broken.rb", function(err, _tab) {
tab = _tab;
tabs.focusTab(tab);
session = tab.document.getSession().session;
session.on("changeAnnotation", testAnnos);
testAnnos();
function testAnnos() {
if (!session.getAnnotations().length)
return;
session.off("changeAnnotation", testAnnos);
done();
}
});
});
it('does completion without going to the server', function beginTest(done) {
// Wait for analysis to complete
if (!session.getAnnotations().length)
return session.once("changeAnnotation", beginTest.bind(null, done));
var callServer;
worker.on("jsonalyzerCallServer", callServer = function() {
assert(false, "Server should not be called");
});
helpers.afterCompleteOpen(function(el) {
expect.html(el).text(/foo/);
worker.off("jsonalyzerCallServer", callServer);
done();
});
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 1 }, end: { row: 1, column: 1 }});
complete.deferredInvoke(false, tab.editor.ace);
});
});
});
});