chronograf/ui/test/tempVars/utils/index.test.ts

425 lines
9.5 KiB
TypeScript

import {resolveValues} from 'src/tempVars/utils'
import {TemplateType, TemplateValueType} from 'src/types'
describe('template value resolution', () => {
describe('query backed templates', () => {
test('uses supplied value for localSelectedValue if exists', () => {
const template = {
id: '0',
tempVar: ':a:',
label: '',
query: {},
type: TemplateType.CSV,
values: [
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: false,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
],
}
const result = resolveValues(template, ['a', 'b', 'c'], 'c')
expect(result).toEqual([
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: false,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: true,
},
])
})
test('uses existing localSelectedValue if none supplied', () => {
const template = {
id: '0',
tempVar: ':a:',
label: '',
query: {},
type: TemplateType.CSV,
values: [
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: true,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
],
}
const result = resolveValues(template, ['a', 'b', 'c'])
expect(result).toEqual([
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: true,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
])
})
test('defaults to selected value if no localSelectedValue and no supplied value', () => {
const template = {
id: '0',
tempVar: ':a:',
label: '',
query: {},
type: TemplateType.CSV,
values: [
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: false,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
],
}
const result = resolveValues(template, ['a', 'b', 'c'])
expect(result).toEqual([
{
value: 'a',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
{
value: 'b',
type: TemplateValueType.CSV,
selected: true,
localSelected: true,
},
{
value: 'c',
type: TemplateValueType.CSV,
selected: false,
localSelected: false,
},
])
})
})
describe('Map templates', () => {
test('maintains current selections', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.Map,
values: [
{
type: TemplateValueType.Map,
key: 'k1',
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.Map,
key: 'k2',
value: 'v2',
selected: false,
localSelected: true,
},
],
}
const expected = [
{
type: TemplateValueType.Map,
key: 'k1',
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.Map,
key: 'k2',
value: 'v2',
selected: false,
localSelected: true,
},
]
expect(resolveValues(template)).toEqual(expected)
})
test('uses supplied selected value when exists', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.Map,
values: [
{
type: TemplateValueType.Map,
key: 'k1',
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.Map,
key: 'k2',
value: 'v2',
selected: false,
localSelected: true,
},
],
}
const expected = [
{
type: TemplateValueType.Map,
key: 'k1',
value: 'v1',
selected: true,
localSelected: true,
},
{
type: TemplateValueType.Map,
key: 'k2',
value: 'v2',
selected: false,
localSelected: false,
},
]
expect(resolveValues(template, null, 'k1')).toEqual(expected)
})
})
describe('CSV templates', () => {
test('maintains current selections', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.CSV,
values: [
{
type: TemplateValueType.CSV,
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.CSV,
value: 'v2',
selected: false,
localSelected: true,
},
],
}
const expected = [
{
type: TemplateValueType.CSV,
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.CSV,
value: 'v2',
selected: false,
localSelected: true,
},
]
expect(resolveValues(template)).toEqual(expected)
})
test('uses supplied selected value when exists', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.CSV,
values: [
{
type: TemplateValueType.CSV,
value: 'v1',
selected: true,
localSelected: false,
},
{
type: TemplateValueType.CSV,
value: 'v2',
selected: false,
localSelected: true,
},
],
}
const expected = [
{
type: TemplateValueType.CSV,
value: 'v1',
selected: true,
localSelected: true,
},
{
type: TemplateValueType.CSV,
value: 'v2',
selected: false,
localSelected: false,
},
]
expect(resolveValues(template, null, 'v1')).toEqual(expected)
})
})
describe('Text templates', () => {
test('maintains current selection', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.Text,
values: [
{
type: TemplateValueType.Constant,
value: 'v1',
selected: true,
localSelected: false,
},
],
}
const expected = [
{
type: TemplateValueType.Constant,
value: 'v1',
selected: true,
localSelected: true,
},
]
expect(resolveValues(template)).toEqual(expected)
})
test('uses supplied selected value when exists', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.Text,
values: [
{
type: TemplateValueType.Constant,
value: 'v1',
selected: true,
localSelected: false,
},
],
}
const expected = [
{
type: TemplateValueType.Constant,
value: 'v2',
selected: false,
localSelected: true,
},
]
expect(resolveValues(template, null, 'v2')).toEqual(expected)
})
test('returns blank value if no existing values and no supplied value', () => {
const template = {
id: '',
label: '',
query: {},
tempVar: ':a:',
type: TemplateType.Text,
values: [],
}
const expected = [
{
type: TemplateValueType.Constant,
value: '',
selected: false,
localSelected: true,
},
]
expect(resolveValues(template)).toEqual(expected)
})
})
})