58 lines
1.5 KiB
TypeScript
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)
|
|
})
|
|
})
|
|
})
|