1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { monacoTypes } from '@grafana/ui';
- import { multiLineFullQuery, singleLineFullQuery } from '../__mocks__/cloudwatch-sql-test-data';
- import MonacoMock from '../__mocks__/monarch/Monaco';
- import TextModel from '../__mocks__/monarch/TextModel';
- import { SQLTokenTypes } from '../cloudwatch-sql/completion/types';
- import cloudWatchSqlLanguageDefinition from '../cloudwatch-sql/definition';
- import { DESC, SELECT } from '../cloudwatch-sql/language';
- import { linkedTokenBuilder } from './linkedTokenBuilder';
- describe('linkedTokenBuilder', () => {
- describe('singleLineFullQuery', () => {
- const testModel = TextModel(singleLineFullQuery.query);
- it('should add correct references to next LinkedToken', () => {
- const position: monacoTypes.IPosition = { lineNumber: 1, column: 0 };
- const current = linkedTokenBuilder(
- MonacoMock,
- cloudWatchSqlLanguageDefinition,
- testModel as monacoTypes.editor.ITextModel,
- position,
- SQLTokenTypes
- );
- expect(current?.is(SQLTokenTypes.Keyword, SELECT)).toBeTruthy();
- expect(current?.getNextNonWhiteSpaceToken()?.is(SQLTokenTypes.Function, 'AVG')).toBeTruthy();
- });
- it('should add correct references to previous LinkedToken', () => {
- const position: monacoTypes.IPosition = { lineNumber: 1, column: singleLineFullQuery.query.length };
- const current = linkedTokenBuilder(
- MonacoMock,
- cloudWatchSqlLanguageDefinition,
- testModel as monacoTypes.editor.ITextModel,
- position,
- SQLTokenTypes
- );
- expect(current?.is(SQLTokenTypes.Number, '10')).toBeTruthy();
- expect(current?.getPreviousNonWhiteSpaceToken()?.is(SQLTokenTypes.Keyword, 'LIMIT')).toBeTruthy();
- expect(
- current?.getPreviousNonWhiteSpaceToken()?.getPreviousNonWhiteSpaceToken()?.is(SQLTokenTypes.Keyword, DESC)
- ).toBeTruthy();
- });
- });
- describe('multiLineFullQuery', () => {
- const testModel = TextModel(multiLineFullQuery.query);
- it('should add LinkedToken with whitespace in case empty lines', () => {
- const position: monacoTypes.IPosition = { lineNumber: 3, column: 0 };
- const current = linkedTokenBuilder(
- MonacoMock,
- cloudWatchSqlLanguageDefinition,
- testModel as monacoTypes.editor.ITextModel,
- position,
- SQLTokenTypes
- );
- expect(current).not.toBeNull();
- expect(current?.isWhiteSpace()).toBeTruthy();
- });
- it('should add correct references to next LinkedToken', () => {
- const position: monacoTypes.IPosition = { lineNumber: 1, column: 0 };
- const current = linkedTokenBuilder(
- MonacoMock,
- cloudWatchSqlLanguageDefinition,
- testModel as monacoTypes.editor.ITextModel,
- position,
- SQLTokenTypes
- );
- expect(current?.is(SQLTokenTypes.Keyword, SELECT)).toBeTruthy();
- expect(current?.getNextNonWhiteSpaceToken()?.is(SQLTokenTypes.Function, 'AVG')).toBeTruthy();
- });
- it('should add correct references to previous LinkedToken even when references spans over multiple lines', () => {
- const position: monacoTypes.IPosition = { lineNumber: 6, column: 7 };
- const current = linkedTokenBuilder(
- MonacoMock,
- cloudWatchSqlLanguageDefinition,
- testModel as monacoTypes.editor.ITextModel,
- position,
- SQLTokenTypes
- );
- expect(current?.is(SQLTokenTypes.Number, '10')).toBeTruthy();
- expect(current?.getPreviousNonWhiteSpaceToken()?.is(SQLTokenTypes.Keyword, 'LIMIT')).toBeTruthy();
- expect(
- current?.getPreviousNonWhiteSpaceToken()?.getPreviousNonWhiteSpaceToken()?.is(SQLTokenTypes.Keyword, DESC)
- ).toBeTruthy();
- });
- });
- });
|