Add tests for all possible timeRange types

pull/2277/head
Andrew Watkins 2017-11-06 11:22:40 -08:00
parent ad55c4051b
commit 98ffb7d93f
3 changed files with 64 additions and 19 deletions

View File

@ -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)
})
})
})

View File

@ -1,2 +1,4 @@
export const ABSOLUTE = 'absolute'
export const INVALID = 'invalid'
export const RELATIVE_LOWER = 'relative lower'
export const RELATIVE_UPPER = 'relative upper'

View File

@ -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