chronograf/ui/test/shared/parsing/getRangeForDygraph.test.js

115 lines
3.2 KiB
JavaScript

import getRange from 'shared/parsing/getRangeForDygraph'
const date = new Date()
const max = 20
const mid = 10
const min = 5
const negMax = -20
const kapacitor = {value: null, rangeValue: null, operator: null}
describe('getRangeForDygraphSpec', () => {
it('gets the range for one timeSeries', () => {
const timeSeries = [[date, min], [date, mid], [date, max]]
const actual = getRange(timeSeries)
const expected = [min, max]
expect(actual).toEqual(expected)
})
it('does not get range when a range is provided', () => {
const timeSeries = [[date, min], [date, max], [date, mid]]
const providedRange = ['0', '4']
const actual = getRange(timeSeries, providedRange)
expect(actual).toEqual([0, 4])
})
it('gets the range for multiple timeSeries', () => {
const timeSeries = [[date, null, min], [date, max, mid], [date, null, mid]]
const actual = getRange(timeSeries)
const expected = [min, max]
expect(actual).toEqual(expected)
})
describe('if min and max are equal', () => {
it('it sets min to 0 if they are positive', () => {
const timeSeries = [[date, max], [date, max], [date, max]]
const actual = getRange(timeSeries)
const expected = [0, max]
expect(actual).toEqual(expected)
})
it('it sets max to 0 if they are negative', () => {
const timeSeries = [[date, negMax], [date, negMax], [date, negMax]]
const actual = getRange(timeSeries)
const expected = [negMax, 0]
expect(actual).toEqual(expected)
})
})
describe('when user provides a Kapacitor rule value', () => {
const timeSeries = [[date, max], [date, mid], [date, min]]
it('can pad positive values', () => {
const [actualMin, actualMax] = getRange(timeSeries, undefined, {
...kapacitor,
value: 20,
})
expect(actualMin).toBe(min)
expect(actualMax).toBeGreaterThan(max)
})
it('can pad negative values', () => {
const [actualMin, actualMax] = getRange(timeSeries, undefined, {
...kapacitor,
value: -10,
})
expect(actualMin).toBeLessThan(min)
expect(actualMax).toBe(max)
})
describe('when Kapacitor operator is "lower than" and value is outiside the range', () => {
it('subtracts from a positive value', () => {
const value = 2
const opAndValue = {operator: 'less than', value}
const [actualMin, actualMax] = getRange(timeSeries, undefined, {
...kapacitor,
...opAndValue,
})
expect(actualMin).toBeLessThan(value)
expect(actualMax).toBe(max)
})
})
})
describe('when user provides a Kapacitor rule rangeValue', () => {
const timeSeries = [[date, max], [date, min], [date, mid]]
it('can pad positive values', () => {
const [actualMin, actualMax] = getRange(timeSeries, undefined, {
...kapacitor,
rangeValue: 20,
})
expect(actualMin).toBe(min)
expect(actualMax).toBeGreaterThan(max)
})
it('can pad negative values', () => {
const [actualMin, actualMax] = getRange(timeSeries, undefined, {
...kapacitor,
rangeValue: -10,
})
expect(actualMin).toBeLessThan(min)
expect(actualMax).toBe(max)
})
})
})