chronograf/ui/test/shared/parsing/flux/results.test.ts

58 lines
1.5 KiB
TypeScript

import {parseResponse} from 'src/shared/parsing/flux/response'
import {
RESPONSE_NO_METADATA,
RESPONSE_METADATA,
MULTI_SCHEMA_RESPONSE,
EXPECTED_COLUMNS,
TRUNCATED_RESPONSE,
ERROR_RESPONSE,
ERROR,
} from 'test/shared/parsing/flux/constants'
describe('Flux results parser', () => {
it('parseResponse into the right number of tables', () => {
const result = parseResponse(MULTI_SCHEMA_RESPONSE)
expect(result).toHaveLength(4)
})
describe('headers', () => {
it('throws when no metadata is present', () => {
expect(() => {
parseResponse(RESPONSE_NO_METADATA)
}).toThrow()
})
it('can parse headers when metadata is present', () => {
const actual = parseResponse(RESPONSE_METADATA)[0].data[0]
expect(actual).toEqual(EXPECTED_COLUMNS)
})
})
describe('group key', () => {
it('parses the group key properly', () => {
const actual = parseResponse(MULTI_SCHEMA_RESPONSE)[0].groupKey
const expected = {
_field: 'usage_guest',
_measurement: 'cpu',
cpu: 'cpu-total',
host: 'WattsInfluxDB',
}
expect(actual).toEqual(expected)
})
})
describe('partial responses', () => {
it('should discard tables without any non-annotation rows', () => {
const actual = parseResponse(TRUNCATED_RESPONSE)
expect(actual).toHaveLength(2)
})
})
describe('error responses', () => {
it('should throw an error if an error csv ', () => {
expect(() => parseResponse(ERROR_RESPONSE)).toThrowError(ERROR)
})
})
})