@krassowski/jupyterlab-lsp
Version:
Language Server Protocol integration for JupyterLab
62 lines • 2.27 kB
JavaScript
import { expect } from 'chai';
import { BrowserConsole } from '../../virtual/console';
import { transformLSPCompletions } from './completion_handler';
describe('transformLSPCompletions', () => {
const browserConsole = new BrowserConsole();
const transform = (token, position, completions) => {
return transformLSPCompletions(token, position, completions, (kind, match) => {
return { kind, match };
}, browserConsole);
};
it('Harmonizes `insertText` from `undefined` when adjusting path-like completions', () => {
// `import { } from '@lumino/<TAB>'`
const result = transform({
offset: 16,
value: "'@lumino/'",
type: 'string'
}, 8, [
{
label: 'algorithm',
kind: 19,
sortText: '1',
data: {
entryNames: ['algorithm']
}
},
{
label: 'application',
kind: 19,
sortText: '1',
data: {
entryNames: ['application']
}
}
]);
expect(result.items.length).to.equal(2);
// insert text should keep `'` as it was part of original token
expect(result.items[0].match.insertText).to.equal("'@lumino/algorithm");
// label should not include `'`
expect(result.items[0].match.label).to.equal('@lumino/algorithm');
expect(result.source.name).to.equal('LSP');
});
it('Harmonizes `insertText` for paths', () => {
// `'./Hov`
const result = transform({
offset: 0,
value: "'./Hov",
type: 'string'
}, 5, [
{
label: "Hover.ipynb'",
kind: 17,
sortText: "aHover.ipynb'",
insertText: "Hover.ipynb'"
}
]);
// insert text should keep `'` as it was part of original token
expect(result.items[0].match.insertText).to.equal("'./Hover.ipynb'");
// label should not include initial `'`
expect(result.items[0].match.label).to.equal("./Hover.ipynb'");
});
});
//# sourceMappingURL=completion_handler.spec.js.map