| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import {
- isSeriesData,
- toLegacyResponseData,
- isTableData,
- toSeriesData,
- guessFieldTypes,
- guessFieldTypeFromValue,
- } from './processSeriesData';
- import { FieldType, TimeSeries } from '../types/data';
- import { dateTime } from './moment_wrapper';
- describe('toSeriesData', () => {
- it('converts timeseries to series', () => {
- const input1 = {
- target: 'Field Name',
- datapoints: [[100, 1], [200, 2]],
- };
- let series = toSeriesData(input1);
- expect(series.fields[0].name).toBe(input1.target);
- expect(series.rows).toBe(input1.datapoints);
- // Should fill a default name if target is empty
- const input2 = {
- // without target
- target: '',
- datapoints: [[100, 1], [200, 2]],
- };
- series = toSeriesData(input2);
- expect(series.fields[0].name).toEqual('Value');
- });
- it('keeps seriesData unchanged', () => {
- const input = {
- fields: [{ text: 'A' }, { text: 'B' }, { text: 'C' }],
- rows: [[100, 'A', 1], [200, 'B', 2], [300, 'C', 3]],
- };
- const series = toSeriesData(input);
- expect(series).toBe(input);
- });
- it('Guess Colum Types from value', () => {
- expect(guessFieldTypeFromValue(1)).toBe(FieldType.number);
- expect(guessFieldTypeFromValue(1.234)).toBe(FieldType.number);
- expect(guessFieldTypeFromValue(3.125e7)).toBe(FieldType.number);
- expect(guessFieldTypeFromValue(true)).toBe(FieldType.boolean);
- expect(guessFieldTypeFromValue(false)).toBe(FieldType.boolean);
- expect(guessFieldTypeFromValue(new Date())).toBe(FieldType.time);
- expect(guessFieldTypeFromValue(dateTime())).toBe(FieldType.time);
- });
- it('Guess Colum Types from strings', () => {
- expect(guessFieldTypeFromValue('1')).toBe(FieldType.number);
- expect(guessFieldTypeFromValue('1.234')).toBe(FieldType.number);
- expect(guessFieldTypeFromValue('3.125e7')).toBe(FieldType.number);
- expect(guessFieldTypeFromValue('True')).toBe(FieldType.boolean);
- expect(guessFieldTypeFromValue('FALSE')).toBe(FieldType.boolean);
- expect(guessFieldTypeFromValue('true')).toBe(FieldType.boolean);
- expect(guessFieldTypeFromValue('xxxx')).toBe(FieldType.string);
- });
- it('Guess Colum Types from series', () => {
- const series = {
- fields: [{ name: 'A (number)' }, { name: 'B (strings)' }, { name: 'C (nulls)' }, { name: 'Time' }],
- rows: [[123, null, null, '2000'], [null, 'Hello', null, 'XXX']],
- };
- const norm = guessFieldTypes(series);
- expect(norm.fields[0].type).toBe(FieldType.number);
- expect(norm.fields[1].type).toBe(FieldType.string);
- expect(norm.fields[2].type).toBeUndefined();
- expect(norm.fields[3].type).toBe(FieldType.time); // based on name
- });
- });
- describe('SerisData backwards compatibility', () => {
- it('converts TimeSeries to series and back again', () => {
- const timeseries = {
- target: 'Field Name',
- datapoints: [[100, 1], [200, 2]],
- };
- const series = toSeriesData(timeseries);
- expect(isSeriesData(timeseries)).toBeFalsy();
- expect(isSeriesData(series)).toBeTruthy();
- const roundtrip = toLegacyResponseData(series) as TimeSeries;
- expect(isSeriesData(roundtrip)).toBeFalsy();
- expect(roundtrip.target).toBe(timeseries.target);
- });
- it('converts TableData to series and back again', () => {
- const table = {
- columns: [{ text: 'a', unit: 'ms' }, { text: 'b', unit: 'zz' }, { text: 'c', unit: 'yy' }],
- rows: [[100, 1, 'a'], [200, 2, 'a']],
- };
- const series = toSeriesData(table);
- expect(isTableData(table)).toBeTruthy();
- expect(isSeriesData(series)).toBeTruthy();
- const roundtrip = toLegacyResponseData(series) as TimeSeries;
- expect(isTableData(roundtrip)).toBeTruthy();
- expect(roundtrip).toMatchObject(table);
- });
- });
|