@neo4j-cypher/language-support
Version:
Cypher language support
116 lines (95 loc) • 3.19 kB
text/typescript
import { CompletionItemKind } from 'vscode-languageserver-types';
import { testCompletions } from './completionAssertionHelpers';
describe('Preparser auto-completions', () => {
test('Correctly completes EXPLAIN and PROFILE', () => {
const query = 'E';
testCompletions({
query,
expected: [
{ label: 'EXPLAIN', kind: CompletionItemKind.Keyword },
{ label: 'PROFILE', kind: CompletionItemKind.Keyword },
],
});
});
test('Correctly suggests normal completions after EXPLAIN', () => {
const query = 'EXPLAIN M';
testCompletions({
query,
expected: [{ label: 'MATCH', kind: CompletionItemKind.Keyword }],
});
});
test('Correctly suggests normal completions after PROFILE', () => {
const query = 'PROFILE M';
testCompletions({
query,
expected: [{ label: 'MATCH', kind: CompletionItemKind.Keyword }],
});
});
test('Correctly suggests EXPLAIN and PROFILE at the begining of a new statement', () => {
const query = 'PROFILE MATCH (n) RETURN n; ';
testCompletions({
query,
expected: [
{ label: 'EXPLAIN', kind: CompletionItemKind.Keyword },
{ label: 'PROFILE', kind: CompletionItemKind.Keyword },
],
});
});
});
describe('Auto completion of back to back keywords', () => {
test('Correctly completes OPTIONAL MATCH', () => {
const query = 'OP';
testCompletions({
query,
expected: [{ label: 'OPTIONAL MATCH', kind: CompletionItemKind.Keyword }],
});
});
test('Correctly completes DEFAULT DATABASE and HOME DATABASE', () => {
const query = 'SHOW ';
testCompletions({
query,
expected: [
{ label: 'DATABASE', kind: CompletionItemKind.Keyword },
{ label: 'DEFAULT DATABASE', kind: CompletionItemKind.Keyword },
{ label: 'HOME DATABASE', kind: CompletionItemKind.Keyword },
],
});
});
test('Correctly completes UNION and UNION ALL', () => {
const query =
'MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN b.name AS name ';
testCompletions({
query,
expected: [{ label: 'UNION', kind: CompletionItemKind.Keyword }],
});
});
test('Correctly completes LOAD CSV', () => {
const query = 'L';
testCompletions({
query,
expected: [{ label: 'LOAD CSV', kind: CompletionItemKind.Keyword }],
excluded: [
{ label: 'LOAD CSV WITH', kind: CompletionItemKind.Keyword },
{ label: 'LOAD CSV WITH HEADERS', kind: CompletionItemKind.Keyword },
],
});
});
test('Correctly completes WITH HEADERS in LOAD CSV', () => {
const query = 'LOAD CSV ';
testCompletions({
query,
expected: [{ label: 'WITH HEADERS', kind: CompletionItemKind.Keyword }],
excluded: [
{ label: 'WITH HEADERS FROM', kind: CompletionItemKind.Keyword },
],
});
});
test('Correctly completes WITH HEADERS in LOAD CSV', () => {
const query = 'LOAD CSV WITH ';
testCompletions({
query,
expected: [{ label: 'HEADERS', kind: CompletionItemKind.Keyword }],
excluded: [{ label: 'HEADERS FROM', kind: CompletionItemKind.Keyword }],
});
});
});