Fix groupBy error caused by undefined aggregate field (#75089)

* fix aggregation field to return empty array instead of undefined in groupBy

* add groupBy test scenario

* remove log
This commit is contained in:
Victor Marin
2023-09-20 09:51:36 +03:00
committed by GitHub
parent 4f06d362df
commit d852aed4f3
3 changed files with 112 additions and 2 deletions
@@ -1,9 +1,10 @@
import { dateTime } from '../datetime/moment_wrapper';
import { DataFrameDTO, FieldType, TableData, TimeSeries } from '../types/index';
import { DataFrameDTO, Field, FieldType, TableData, TimeSeries } from '../types/index';
import { ArrayDataFrame } from './ArrayDataFrame';
import {
createDataFrame,
guessFieldTypeForField,
guessFieldTypeFromValue,
guessFieldTypes,
isDataFrame,
@@ -403,3 +404,50 @@ describe('reverse DataFrame', () => {
expect(rev.fields[1].nanos).toBeUndefined();
});
});
describe('guessFieldTypeForField', () => {
it('should guess types if value exists', () => {
const field: Field = {
name: 'Field',
config: {},
type: FieldType.other,
values: [1, 2, 3],
};
expect(guessFieldTypeForField(field)).toBe(FieldType.number);
field.values = [null, null, 3];
expect(guessFieldTypeForField(field)).toBe(FieldType.number);
});
it('should guess type if name suggests time values', () => {
const field: Field = {
name: 'Date',
config: {},
type: FieldType.other,
values: [1, 2, 3],
};
expect(guessFieldTypeForField(field)).toBe(FieldType.time);
field.name = 'time';
expect(guessFieldTypeForField(field)).toBe(FieldType.time);
});
it('should return undefined if no values present', () => {
const field: Field = {
name: 'Val',
config: {},
type: FieldType.other,
values: [null, null],
};
expect(guessFieldTypeForField(field)).toBe(undefined);
field.values = [];
expect(guessFieldTypeForField(field)).toBe(undefined);
});
});