mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -06:00
* Add and configure eslint-plugin-import * Fix the lint:ts npm command * Autofix + prettier all the files * Manually fix remaining files * Move jquery code in jest-setup to external file to safely reorder imports * Resolve issue caused by circular dependencies within Prometheus * Update .betterer.results * Fix missing // @ts-ignore * ignore iconBundle.ts * Fix missing // @ts-ignore
92 lines
3.2 KiB
TypeScript
92 lines
3.2 KiB
TypeScript
import { DecimalCount, TimeZone } from '@grafana/data';
|
|
|
|
import kbn from './kbn';
|
|
|
|
// Most of the methods in this file are deprecated
|
|
// Stub the deprecation warning here to prevent polluting the test output
|
|
jest.mock('@grafana/data', () => ({
|
|
...jest.requireActual('@grafana/data'),
|
|
deprecationWarning: () => {},
|
|
}));
|
|
|
|
interface ValueFormatTest {
|
|
id: string;
|
|
decimals?: DecimalCount;
|
|
timeZone?: TimeZone;
|
|
value: number;
|
|
result: string;
|
|
}
|
|
|
|
const formatTests: ValueFormatTest[] = [
|
|
// Currency
|
|
{ id: 'currencyUSD', decimals: 2, value: 1532.82, result: '$1.53K' },
|
|
{ id: 'currencyKRW', decimals: 2, value: 1532.82, result: '₩1.53K' },
|
|
{ id: 'currencyIDR', decimals: 2, value: 1532.82, result: 'Rp1.53K' },
|
|
|
|
// Typical
|
|
{ id: 'ms', decimals: 4, value: 0.0024, result: '0.0024 ms' },
|
|
{ id: 'ms', decimals: 0, value: 100, result: '100 ms' },
|
|
{ id: 'ms', decimals: 2, value: 1250, result: '1.25 s' },
|
|
{ id: 'ms', decimals: 1, value: 10000086.123, result: '2.8 hour' },
|
|
{ id: 'ms', decimals: 0, value: 1200, result: '1 s' },
|
|
{ id: 'short', decimals: 0, value: 98765, result: '99 K' },
|
|
{ id: 'short', decimals: 0, value: 9876543, result: '10 Mil' },
|
|
{ id: 'kbytes', decimals: 3, value: 10000000, result: '9.537 GiB' },
|
|
{ id: 'deckbytes', decimals: 3, value: 10000000, result: '10.000 GB' },
|
|
{ id: 'megwatt', decimals: 3, value: 1000, result: '1.000 GW' },
|
|
{ id: 'kohm', decimals: 3, value: 1000, result: '1.000 MΩ' },
|
|
{ id: 'Mohm', decimals: 3, value: 1000, result: '1.000 GΩ' },
|
|
|
|
{ id: 'farad', decimals: 3, value: 1000, result: '1.000 kF' },
|
|
{ id: 'µfarad', decimals: 3, value: 1000, result: '1.000 mF' },
|
|
{ id: 'nfarad', decimals: 3, value: 1000, result: '1.000 µF' },
|
|
{ id: 'pfarad', decimals: 3, value: 1000, result: '1.000 nF' },
|
|
{ id: 'ffarad', decimals: 3, value: 1000, result: '1.000 pF' },
|
|
|
|
{ id: 'henry', decimals: 3, value: 1000, result: '1.000 kH' },
|
|
{ id: 'mhenry', decimals: 3, value: 1000, result: '1.000 H' },
|
|
{ id: 'µhenry', decimals: 3, value: 1000, result: '1.000 mH' },
|
|
];
|
|
|
|
describe('Chcek KBN value formats', () => {
|
|
for (const test of formatTests) {
|
|
describe(`value format: ${test.id}`, () => {
|
|
it(`should translate ${test.value} as ${test.result}`, () => {
|
|
const result = kbn.valueFormats[test.id](test.value, test.decimals);
|
|
expect(result).toBe(test.result);
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
describe('describe_interval', () => {
|
|
it('falls back to seconds if input is a number', () => {
|
|
expect(kbn.describeInterval('123')).toEqual({
|
|
sec: 1,
|
|
type: 's',
|
|
count: 123,
|
|
});
|
|
});
|
|
|
|
it('parses a valid time unt string correctly', () => {
|
|
expect(kbn.describeInterval('123h')).toEqual({
|
|
sec: 3600,
|
|
type: 'h',
|
|
count: 123,
|
|
});
|
|
});
|
|
|
|
it('fails if input is invalid', () => {
|
|
expect(() => kbn.describeInterval('123xyz')).toThrow();
|
|
expect(() => kbn.describeInterval('xyz')).toThrow();
|
|
});
|
|
});
|
|
|
|
describe('addSlashes', () => {
|
|
it('properly escapes backslashes, single-quotes, double-quotes and the number zero', () => {
|
|
expect(kbn.addSlashes('this is a \'test\' with "quotes" backslashes (\\) and zero (0)')).toEqual(
|
|
'this is a \\\'test\\\' with \\"quotes\\" backslashes (\\\\) and zero (\\0)'
|
|
);
|
|
});
|
|
});
|