Add tests for all possible timeRange types
parent
ad55c4051b
commit
98ffb7d93f
|
@ -1,19 +1,26 @@
|
|||
import {timeRangeType, shiftTimeRange} from 'shared/query/helpers'
|
||||
import {ABSOLUTE} from 'shared/constants/timeRange'
|
||||
const format = 'influxql'
|
||||
import moment from 'moment'
|
||||
import {
|
||||
INVALID,
|
||||
ABSOLUTE,
|
||||
INFLUXQL,
|
||||
RELATIVE_LOWER,
|
||||
RELATIVE_UPPER,
|
||||
} from 'shared/constants/timeRange'
|
||||
const format = INFLUXQL
|
||||
|
||||
describe.only('Shared.Query.Helpers', () => {
|
||||
describe('Shared.Query.Helpers', () => {
|
||||
describe('timeRangeTypes', () => {
|
||||
it('return invlalid if no upper and lower', () => {
|
||||
it('returns invalid if no upper and lower', () => {
|
||||
const upper = null
|
||||
const lower = null
|
||||
|
||||
const timeRange = {lower, upper}
|
||||
|
||||
expect(timeRangeType(timeRange)).to.equal(ABSOLUTE)
|
||||
expect(timeRangeType(timeRange)).to.equal(INVALID)
|
||||
})
|
||||
|
||||
it('it can detect absolute type', () => {
|
||||
it('can detect absolute type', () => {
|
||||
const tenMinutes = 600000
|
||||
const upper = Date.now()
|
||||
const lower = upper - tenMinutes
|
||||
|
@ -22,5 +29,24 @@ describe.only('Shared.Query.Helpers', () => {
|
|||
|
||||
expect(timeRangeType(timeRange)).to.equal(ABSOLUTE)
|
||||
})
|
||||
|
||||
it('can detect exclusive relative lower', () => {
|
||||
const lower = 'now() - 15m'
|
||||
const upper = null
|
||||
|
||||
const timeRange = {lower, upper, format}
|
||||
|
||||
expect(timeRangeType(timeRange)).to.equal(RELATIVE_LOWER)
|
||||
})
|
||||
|
||||
it('can detect relative upper', () => {
|
||||
const upper = 'now()'
|
||||
const oneMinute = 60000
|
||||
const lower = Date.now() - oneMinute
|
||||
|
||||
const timeRange = {lower, upper, format}
|
||||
|
||||
expect(timeRangeType(timeRange)).to.equal(RELATIVE_UPPER)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
export const ABSOLUTE = 'absolute'
|
||||
export const INVALID = 'invalid'
|
||||
export const RELATIVE_LOWER = 'relative lower'
|
||||
export const RELATIVE_UPPER = 'relative upper'
|
||||
|
|
|
@ -1,24 +1,41 @@
|
|||
import moment from 'moment'
|
||||
import {ABSOLUTE} from 'shared/constants/timeRange'
|
||||
import {
|
||||
INFLUXQL,
|
||||
ABSOLUTE,
|
||||
INVALID,
|
||||
RELATIVE_LOWER,
|
||||
RELATIVE_UPPER,
|
||||
} from 'shared/constants/timeRange'
|
||||
const now = /^now/
|
||||
|
||||
// calc time range type
|
||||
export const timeRangeType = ({upper, lower, type}) => {
|
||||
if (!upper && !lower) {
|
||||
return 'invalid'
|
||||
return INVALID
|
||||
}
|
||||
|
||||
if (!type || type === 'influxql') {
|
||||
const mUpper = moment(upper)
|
||||
const mLower = moment(lower)
|
||||
const isUpperValid = mUpper.isValid()
|
||||
const isLowerValid = mLower.isValid()
|
||||
|
||||
if (isUpperValid && isLowerValid) {
|
||||
return ABSOLUTE
|
||||
}
|
||||
if (type && type !== INFLUXQL) {
|
||||
return INVALID
|
||||
}
|
||||
|
||||
return 'none'
|
||||
const isUpperValid = moment(upper).isValid()
|
||||
const isLowerValid = moment(lower).isValid()
|
||||
|
||||
// {lower: <Date>, upper: <Date>}
|
||||
if (isLowerValid && isUpperValid) {
|
||||
return ABSOLUTE
|
||||
}
|
||||
|
||||
// {lower: now - <Duration>, upper: <empty>}
|
||||
if (now.test(lower) && !upper) {
|
||||
return RELATIVE_LOWER
|
||||
}
|
||||
|
||||
// {lower: <Date>, upper: now() - <Duration>}
|
||||
if (isLowerValid && now.test(upper)) {
|
||||
return RELATIVE_UPPER
|
||||
}
|
||||
|
||||
return INVALID
|
||||
}
|
||||
|
||||
// based on time range type, calc the time shifted dates
|
||||
|
|
Loading…
Reference in New Issue