grafana/public/app/plugins/datasource/loki/languageUtils.test.ts
Sven Grossmann 932349b5ab
Loki: Fix wrongly escaped label values when using LabelFilter (#59812)
* change backticks to quotes

* add unescaping to `addFilterAsLabelFilter`

* fix removal of wrong quotes

* change unescape order
2022-12-06 12:30:03 +01:00

45 lines
1.7 KiB
TypeScript

import { escapeLabelValueInExactSelector, isBytesString, unescapeLabelValue } from './languageUtils';
describe('isBytesString', () => {
it('correctly matches bytes string with integers', () => {
expect(isBytesString('500b')).toBe(true);
expect(isBytesString('2TB')).toBe(true);
});
it('correctly matches bytes string with float', () => {
expect(isBytesString('500.4kib')).toBe(true);
expect(isBytesString('10.4654Mib')).toBe(true);
});
it('does not match integer without unit', () => {
expect(isBytesString('500')).toBe(false);
expect(isBytesString('10')).toBe(false);
});
it('does not match float without unit', () => {
expect(isBytesString('50.047')).toBe(false);
expect(isBytesString('1.234')).toBe(false);
});
});
describe('escapeLabelValueInExactSelector', () => {
it.each`
value | escapedValue
${'nothing to escape'} | ${'nothing to escape'}
${'escape quote: "'} | ${'escape quote: \\"'}
${'escape newline: \nend'} | ${'escape newline: \\nend'}
${'escape slash: \\'} | ${'escape slash: \\\\'}
`('when called with $value', ({ value, escapedValue }) => {
expect(escapeLabelValueInExactSelector(value)).toEqual(escapedValue);
});
});
describe('unescapeLabelValueInExactSelector', () => {
it.each`
value | unescapedValue
${'nothing to unescape'} | ${'nothing to unescape'}
${'escape quote: \\"'} | ${'escape quote: "'}
${'escape newline: \\nend'} | ${'escape newline: \nend'}
${'escape slash: \\\\'} | ${'escape slash: \\'}
`('when called with $value', ({ value, unescapedValue }) => {
expect(unescapeLabelValue(value)).toEqual(unescapedValue);
});
});