grafana/public/app/features/dashboard/utils/getRefreshFromUrl.test.ts
Hugo Häggmark c5279bba7f
RefreshPicker: Fixes so valid intervals in url are visible in RefreshPicker (#30474)
* RefreshPicker: Fixes so refresh intervals from url are visible in RefreshPicker

* Refactor: changes after PR comments

* Chore: adds comment
2021-01-25 08:37:41 +01:00

76 lines
3.4 KiB
TypeScript

import { getRefreshFromUrl } from './getRefreshFromUrl';
describe('getRefreshFromUrl', () => {
describe('when refresh is not part of params', () => {
it('then it should return current refresh value', () => {
const params = {};
const currentRefresh = false;
const minRefreshInterval = '5s';
const isAllowedIntervalFn = () => false;
const actual = getRefreshFromUrl({
params,
currentRefresh,
minRefreshInterval,
isAllowedIntervalFn,
});
expect(actual).toBe(false);
});
});
describe('when refresh is part of params', () => {
describe('and refresh is an existing and valid interval', () => {
it('then it should return the refresh value', () => {
const params = { refresh: '10s' };
const currentRefresh = '';
const minRefreshInterval = '5s';
const isAllowedIntervalFn = () => true;
const refreshIntervals = ['5s', '10s', '30s'];
const actual = getRefreshFromUrl({
params,
currentRefresh,
minRefreshInterval,
isAllowedIntervalFn,
refreshIntervals,
});
expect(actual).toBe('10s');
});
});
it.each`
refresh | isAllowedInterval | minRefreshInterval | refreshIntervals | expected
${'6s'} | ${true} | ${'1s'} | ${['5s', '6s', '10s', '30s']} | ${'6s'}
${'6s'} | ${true} | ${'10s'} | ${['5s', '10s', '30s']} | ${'10s'}
${'6s'} | ${true} | ${'1s'} | ${['5s', '10s', '30s']} | ${'5s'}
${'6s'} | ${true} | ${'1s'} | ${undefined} | ${'5s'}
${'6s'} | ${true} | ${'10s'} | ${undefined} | ${'10s'}
${'6s'} | ${true} | ${'1s'} | ${[]} | ${'currentRefresh'}
${'6s'} | ${true} | ${'10s'} | ${[]} | ${'currentRefresh'}
${'6s'} | ${false} | ${'1s'} | ${['5s', '6s', '10s', '30s']} | ${'5s'}
${'6s'} | ${false} | ${'10s'} | ${['5s', '6s', '10s', '30s']} | ${'10s'}
${'6s'} | ${false} | ${'1s'} | ${['5s', '10s', '30s']} | ${'5s'}
${'6s'} | ${false} | ${'10s'} | ${['5s', '10s', '30s']} | ${'10s'}
${'6s'} | ${false} | ${'1s'} | ${undefined} | ${'5s'}
${'6s'} | ${false} | ${'10s'} | ${undefined} | ${'10s'}
${'6s'} | ${false} | ${'1s'} | ${[]} | ${'currentRefresh'}
${'6s'} | ${false} | ${'10s'} | ${[]} | ${'currentRefresh'}
`(
'when called with refresh:{$refresh}, isAllowedInterval:{$isAllowedInterval}, minRefreshInterval:{$minRefreshInterval}, refreshIntervals:{$refreshIntervals} then it should return: $expected',
({ refresh, isAllowedInterval, minRefreshInterval, refreshIntervals, expected }) => {
const actual = getRefreshFromUrl({
params: { refresh },
currentRefresh: 'currentRefresh',
minRefreshInterval,
isAllowedIntervalFn: () => isAllowedInterval,
refreshIntervals,
});
expect(actual).toBe(expected);
}
);
});
});