c9-core/plugins/c9.ide.language.codeintel/codeintel_test.js

136 wiersze
5.8 KiB
JavaScript

/*global describe it before after beforeEach onload*/
"use client";
require(["plugins/c9.ide.language/test_base"], function(base) {
base.setup(function(err, imports, helpers) {
if (err) throw err;
var language = imports.language;
var chai = require("lib/chai/chai");
var expect = chai.expect;
var assert = require("assert");
var tabs = imports.tabManager;
var complete = imports["language.complete"];
var afterNoCompleteOpen = helpers.afterNoCompleteOpen;
var afterCompleteDocOpen = helpers.afterCompleteDocOpen;
var afterCompleteOpen = helpers.afterCompleteOpen;
var isCompleterOpen = helpers.isCompleterOpen;
var getCompletionCalls = helpers.getCompletionCalls;
describe("analysis", function() {
var jsTab;
var jsSession;
// 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("/language.js", function(err, tab) {
if (err) return done(err);
jsTab = tab;
jsSession = jsTab.document.getSession().session;
expect(jsSession).to.not.equal(null);
setTimeout(function() {
complete.closeCompletionBox();
done();
});
});
}, 0);
});
it('manages to succesfully install codeintel', function(done) {
this.timeout(5 * 60 * 1000);
tabs.openFile("/test.css", function(err, tab) {
if (err) return done(err);
tabs.focusTab(tab);
imports.worker.once("codeintel_ready", function(e) {
assert(!e.data.err, e.data.err);
done();
});
});
});
it('does continuous completion for CSS if you just typed one character', function(done) {
tabs.openFile("/test.css", function(err, tab) {
if (err) return done(err);
tabs.focusTab(tab);
// We get a tab, but it's not done yet, so we wait
setTimeout(function() {
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
tab.editor.ace.onTextInput(" f");
afterCompleteOpen(function(el) {
expect.html(el).text(/font-/);
done();
});
});
});
});
it('does continuous completion for CSS if you just typed one character', function(done) {
tabs.openFile("/test.css", function(err, tab) {
if (err) return done(err);
tabs.focusTab(tab);
// We get a tab, but it's not done yet, so we wait
setTimeout(function() {
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
tab.editor.ace.onTextInput("f");
afterCompleteOpen(function(el) {
assert(el.textContent.match(/font-size/), el.textContent);
done();
});
});
});
});
it('does continuous completion for CSS', function(done) {
tabs.openFile("/test.css", function(err, tab) {
if (err) return done(err);
tabs.focusTab(tab);
// We get a tab, but it's not done yet, so we wait
setTimeout(function() {
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
tab.editor.ace.onTextInput("font-f");
afterCompleteOpen(function(el) {
expect.html(el).text(/font-family/);
done();
});
});
});
});
it("completes php", function(done) {
tabs.openFile("/test.php", function(err, tab) {
if (err) return done(err);
tabs.focusTab(tab);
imports.worker.on("setCompletionRegex", function onRegex(e) {
if (e.data.language !== "php")
return;
imports.worker.off("setCompletionRegex", onRegex);
tab.editor.ace.selection.setSelectionRange({ start: { row: 17, column: 5 }, end: { row: 17, column: 5 }});
tab.editor.ace.onTextInput("-");
tab.editor.ace.onTextInput(">");
afterCompleteOpen(function(el) {
complete.closeCompletionBox();
assert(el.textContent.match(/y/), el.textContent);
done();
});
});
});
});
});
});
});