2020-02-12 08:45:36 -06:00
|
|
|
import Prism from 'prismjs';
|
|
|
|
|
2022-04-22 08:33:13 -05:00
|
|
|
import syntax from './syntax';
|
|
|
|
|
2020-02-12 08:45:36 -06:00
|
|
|
describe('Loki syntax', () => {
|
|
|
|
it('should highlight Loki query correctly', () => {
|
|
|
|
expect(Prism.highlight('{key="val#ue"}', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">key</span>=<span class="token label-value attr-value">"val#ue"</span></span><span class="token punctuation">}</span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('{key="#value"}', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">key</span>=<span class="token label-value attr-value">"#value"</span></span><span class="token punctuation">}</span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('{key="value#"}', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">key</span>=<span class="token label-value attr-value">"value#"</span></span><span class="token punctuation">}</span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('#test{key="value"}', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token comment">#test{key="value"}</span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('{key="value"}#test', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">key</span>=<span class="token label-value attr-value">"value"</span></span><span class="token punctuation">}</span><span class="token comment">#test</span>'
|
|
|
|
);
|
2020-10-14 03:22:39 -05:00
|
|
|
expect(Prism.highlight('{key="value"', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">key</span>=<span class="token label-value attr-value">"value"</span></span>'
|
|
|
|
);
|
2022-02-15 05:02:51 -06:00
|
|
|
expect(Prism.highlight('{Key="value"', syntax, 'loki')).toBe(
|
|
|
|
'<span class="token context-labels"><span class="token punctuation">{</span><span class="token label-key attr-name">Key</span>=<span class="token label-value attr-value">"value"</span></span>'
|
|
|
|
);
|
2020-10-14 03:22:39 -05:00
|
|
|
});
|
|
|
|
it('should highlight functions in Loki query correctly', () => {
|
|
|
|
expect(Prism.highlight('rate({key="value"}[5m])', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token function">rate</span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('avg_over_time({key="value"}[5m])', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token function">avg_over_time</span>'
|
|
|
|
);
|
2023-03-03 03:09:34 -06:00
|
|
|
expect(Prism.highlight('vector(5)', syntax, 'loki')).toContain('<span class="token function">vector</span>');
|
2020-10-14 03:22:39 -05:00
|
|
|
});
|
|
|
|
it('should highlight operators in Loki query correctly', () => {
|
|
|
|
expect(Prism.highlight('{key="value"} |= "test"', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token operator"> |= </span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('{key="value"} |~"test"', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token operator"> |~</span>'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
it('should highlight pipe operations in Loki query correctly', () => {
|
|
|
|
expect(Prism.highlight('{key="value"} |= "test" | logfmt', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token pipe-operator operator">|</span> <span class="token pipe-operations keyword">logfmt</span></span>'
|
|
|
|
);
|
|
|
|
expect(Prism.highlight('{key="value"} |= "test" | label_format', syntax, 'loki')).toContain(
|
|
|
|
'<span class="token context-pipe"> <span class="token pipe-operator operator">|</span> <span class="token pipe-operations keyword">label_format</span></span>'
|
|
|
|
);
|
2020-02-12 08:45:36 -06:00
|
|
|
});
|
|
|
|
});
|