UNPKG

@neo4j-cypher/language-support

Version:
116 lines (95 loc) 3.19 kB
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 }], }); }); });