2023-04-20 09:59:18 -05:00
|
|
|
import { DataFrame, FieldType } from '@grafana/data';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2023-03-03 09:02:14 -06:00
|
|
|
import { sortDataFrameByTime, SortDirection } from './sortDataFrame';
|
2022-04-20 06:52:15 -05:00
|
|
|
|
|
|
|
const inputFrame: DataFrame = {
|
|
|
|
refId: 'A',
|
|
|
|
fields: [
|
|
|
|
{
|
|
|
|
name: 'time',
|
|
|
|
type: FieldType.time,
|
|
|
|
config: {},
|
2023-04-20 09:59:18 -05:00
|
|
|
values: [1005, 1001, 1004, 1002, 1003],
|
2022-04-20 06:52:15 -05:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'value',
|
|
|
|
type: FieldType.string,
|
|
|
|
config: {},
|
2023-04-20 09:59:18 -05:00
|
|
|
values: ['line5', 'line1', 'line4', 'line2', 'line3'],
|
2022-04-20 06:52:15 -05:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'tsNs',
|
|
|
|
type: FieldType.time,
|
|
|
|
config: {},
|
2023-04-20 09:59:18 -05:00
|
|
|
values: [`1005000000`, `1001000000`, `1004000000`, `1002000000`, `1003000000`],
|
2022-04-20 06:52:15 -05:00
|
|
|
},
|
|
|
|
],
|
|
|
|
length: 5,
|
|
|
|
};
|
|
|
|
|
|
|
|
describe('loki sortDataFrame', () => {
|
|
|
|
it('sorts a dataframe ascending', () => {
|
2023-03-03 09:02:14 -06:00
|
|
|
const sortedFrame = sortDataFrameByTime(inputFrame, SortDirection.Ascending);
|
2022-04-20 06:52:15 -05:00
|
|
|
expect(sortedFrame.length).toBe(5);
|
2023-04-20 09:59:18 -05:00
|
|
|
const timeValues = sortedFrame.fields[0].values;
|
|
|
|
const lineValues = sortedFrame.fields[1].values;
|
|
|
|
const tsNsValues = sortedFrame.fields[2].values;
|
2022-04-20 06:52:15 -05:00
|
|
|
|
2023-04-20 09:59:18 -05:00
|
|
|
expect(timeValues).toEqual([1001, 1002, 1003, 1004, 1005]);
|
|
|
|
expect(lineValues).toEqual(['line1', 'line2', 'line3', 'line4', 'line5']);
|
|
|
|
expect(tsNsValues).toEqual([`1001000000`, `1002000000`, `1003000000`, `1004000000`, `1005000000`]);
|
2022-04-20 06:52:15 -05:00
|
|
|
});
|
|
|
|
it('sorts a dataframe descending', () => {
|
2023-03-03 09:02:14 -06:00
|
|
|
const sortedFrame = sortDataFrameByTime(inputFrame, SortDirection.Descending);
|
2022-04-20 06:52:15 -05:00
|
|
|
expect(sortedFrame.length).toBe(5);
|
2023-04-20 09:59:18 -05:00
|
|
|
const timeValues = sortedFrame.fields[0].values;
|
|
|
|
const lineValues = sortedFrame.fields[1].values;
|
|
|
|
const tsNsValues = sortedFrame.fields[2].values;
|
2022-04-20 06:52:15 -05:00
|
|
|
|
2023-04-20 09:59:18 -05:00
|
|
|
expect(timeValues).toEqual([1005, 1004, 1003, 1002, 1001]);
|
|
|
|
expect(lineValues).toEqual(['line5', 'line4', 'line3', 'line2', 'line1']);
|
|
|
|
expect(tsNsValues).toEqual([`1005000000`, `1004000000`, `1003000000`, `1002000000`, `1001000000`]);
|
2022-04-20 06:52:15 -05:00
|
|
|
});
|
|
|
|
});
|