mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Add highlight for backticks and queries with parser * Fix escaping for backticks and quotes
64 lines
2.8 KiB
TypeScript
64 lines
2.8 KiB
TypeScript
import { getHighlighterExpressionsFromQuery } from './query_utils';
|
|
|
|
describe('getHighlighterExpressionsFromQuery', () => {
|
|
it('returns no expressions for empty query', () => {
|
|
expect(getHighlighterExpressionsFromQuery('')).toEqual([]);
|
|
});
|
|
|
|
it('returns an expression for query with filter using quotes', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x"')).toEqual(['x']);
|
|
});
|
|
|
|
it('returns an expression for query with filter using backticks', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= `x`')).toEqual(['x']);
|
|
});
|
|
|
|
it('returns expressions for query with filter chain', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ "y"')).toEqual(['x', 'y']);
|
|
});
|
|
|
|
it('returns expressions for query with filter chain using both backticks and quotes', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ `y`')).toEqual(['x', 'y']);
|
|
});
|
|
|
|
it('returns expression for query with log parser', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" | logfmt')).toEqual(['x']);
|
|
});
|
|
|
|
it('returns expressions for query with filter chain folowed by log parser', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ "y" | logfmt')).toEqual(['x', 'y']);
|
|
});
|
|
|
|
it('returns drops expressions for query with negative filter chain using quotes', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" != "y"')).toEqual(['x']);
|
|
});
|
|
|
|
it('returns expressions for query with filter chain using backticks', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= `x` |~ `y`')).toEqual(['x', 'y']);
|
|
});
|
|
|
|
it('returns expressions for query with filter chain using quotes and backticks', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ `y`')).toEqual(['x', 'y']);
|
|
});
|
|
|
|
it('returns null if filter term is not wrapped in double quotes', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= x')).toEqual([]);
|
|
});
|
|
|
|
it('escapes filter term if regex filter operator is not used', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x[yz].w"')).toEqual(['x\\[yz\\]\\.w']);
|
|
});
|
|
|
|
it('does not escape filter term if regex filter operator is used', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |~ "x[yz].w" |~ "z.+"')).toEqual(['x[yz].w', 'z.+']);
|
|
});
|
|
|
|
it('removes extra backslash escaping if regex filter operator and quotes are used', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |~ "\\\\w+"')).toEqual(['\\w+']);
|
|
});
|
|
|
|
it('does not remove backslash escaping if regex filter operator and backticks are used', () => {
|
|
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |~ `\\w+`')).toEqual(['\\w+']);
|
|
});
|
|
});
|