query_utils.test.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { parseQuery, getHighlighterExpressionsFromQuery } from './query_utils';
  2. import { LokiExpression } from './types';
  3. describe('parseQuery', () => {
  4. it('returns empty for empty string', () => {
  5. expect(parseQuery('')).toEqual({
  6. query: '',
  7. regexp: '',
  8. } as LokiExpression);
  9. });
  10. it('returns regexp for strings without query', () => {
  11. expect(parseQuery('test')).toEqual({
  12. query: 'test',
  13. regexp: '',
  14. } as LokiExpression);
  15. });
  16. it('returns query for strings without regexp', () => {
  17. expect(parseQuery('{foo="bar"}')).toEqual({
  18. query: '{foo="bar"}',
  19. regexp: '',
  20. } as LokiExpression);
  21. });
  22. it('returns query for strings with query and search string', () => {
  23. expect(parseQuery('x {foo="bar"}')).toEqual({
  24. query: '{foo="bar"}',
  25. regexp: '(?i)x',
  26. } as LokiExpression);
  27. });
  28. it('returns query for strings with query and regexp', () => {
  29. expect(parseQuery('{foo="bar"} x|y')).toEqual({
  30. query: '{foo="bar"}',
  31. regexp: '(?i)x|y',
  32. } as LokiExpression);
  33. });
  34. it('returns query for selector with two labels', () => {
  35. expect(parseQuery('{foo="bar", baz="42"}')).toEqual({
  36. query: '{foo="bar", baz="42"}',
  37. regexp: '',
  38. } as LokiExpression);
  39. });
  40. it('returns query and regexp with quantifiers', () => {
  41. expect(parseQuery('{foo="bar"} \\.java:[0-9]{1,5}')).toEqual({
  42. query: '{foo="bar"}',
  43. regexp: '(?i)\\.java:[0-9]{1,5}',
  44. } as LokiExpression);
  45. expect(parseQuery('\\.java:[0-9]{1,5} {foo="bar"}')).toEqual({
  46. query: '{foo="bar"}',
  47. regexp: '(?i)\\.java:[0-9]{1,5}',
  48. } as LokiExpression);
  49. });
  50. it('returns query with filter operands as is', () => {
  51. expect(parseQuery('{foo="bar"} |= "x|y"')).toEqual({
  52. query: '{foo="bar"} |= "x|y"',
  53. regexp: '',
  54. } as LokiExpression);
  55. expect(parseQuery('{foo="bar"} |~ "42"')).toEqual({
  56. query: '{foo="bar"} |~ "42"',
  57. regexp: '',
  58. } as LokiExpression);
  59. });
  60. });
  61. describe('getHighlighterExpressionsFromQuery', () => {
  62. it('returns no expressions for empty query', () => {
  63. expect(getHighlighterExpressionsFromQuery('')).toEqual([]);
  64. });
  65. it('returns a single expressions for legacy query', () => {
  66. expect(getHighlighterExpressionsFromQuery('{} x')).toEqual(['(?i)x']);
  67. expect(getHighlighterExpressionsFromQuery('{foo="bar"} x')).toEqual(['(?i)x']);
  68. });
  69. it('returns an expression for query with filter', () => {
  70. expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x"')).toEqual(['x']);
  71. });
  72. it('returns expressions for query with filter chain', () => {
  73. expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ "y"')).toEqual(['x', 'y']);
  74. });
  75. it('returns drops expressions for query with negative filter chain', () => {
  76. expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" != "y"')).toEqual(['x']);
  77. });
  78. it('returns null if filter term is not wrapped in double quotes', () => {
  79. expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= x')).toEqual(null);
  80. });
  81. });