Add refID tests to affected transformations
This commit is contained in:
@@ -14,6 +14,7 @@ describe('JOIN Transformer', () => {
|
||||
|
||||
describe('outer join', () => {
|
||||
const everySecondSeries = toDataFrame({
|
||||
refId: 'A',
|
||||
name: 'even',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [3000, 4000, 5000, 6000] },
|
||||
@@ -23,6 +24,7 @@ describe('JOIN Transformer', () => {
|
||||
});
|
||||
|
||||
const everyOtherSecondSeries = toDataFrame({
|
||||
refId: 'B',
|
||||
name: 'odd',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [1000, 3000, 5000, 7000] },
|
||||
@@ -31,18 +33,20 @@ describe('JOIN Transformer', () => {
|
||||
],
|
||||
});
|
||||
|
||||
it('joins by time field', async () => {
|
||||
it('joins by time field with defined refId', async () => {
|
||||
const cfg: DataTransformerConfig<JoinByFieldOptions> = {
|
||||
id: DataTransformerID.seriesToColumns,
|
||||
options: {
|
||||
byField: 'time',
|
||||
},
|
||||
refId: 'test',
|
||||
};
|
||||
|
||||
await expect(transformDataFrame([cfg], [everySecondSeries, everyOtherSecondSeries])).toEmitValuesWith(
|
||||
(received) => {
|
||||
const data = received[0];
|
||||
const filtered = data[0];
|
||||
expect(filtered.refId).toBe('test');
|
||||
expect(filtered.fields).toMatchInlineSnapshot(`
|
||||
[
|
||||
{
|
||||
@@ -133,7 +137,7 @@ describe('JOIN Transformer', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('joins by temperature field', async () => {
|
||||
it('joins by temperature field with dynamic refId', async () => {
|
||||
const cfg: DataTransformerConfig<JoinByFieldOptions> = {
|
||||
id: DataTransformerID.seriesToColumns,
|
||||
options: {
|
||||
@@ -145,6 +149,7 @@ describe('JOIN Transformer', () => {
|
||||
(received) => {
|
||||
const data = received[0];
|
||||
const filtered = data[0];
|
||||
expect(filtered.refId).toBe('joinByField-A-B');
|
||||
expect(filtered.fields).toMatchInlineSnapshot(`
|
||||
[
|
||||
{
|
||||
|
||||
@@ -32,8 +32,9 @@ describe('Merge multiple to single', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('combine two series into one', async () => {
|
||||
it('combine two series into one with dynamic refId', async () => {
|
||||
const seriesA = toDataFrame({
|
||||
refId: 'A',
|
||||
name: 'A',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [1000] },
|
||||
@@ -42,6 +43,7 @@ describe('Merge multiple to single', () => {
|
||||
});
|
||||
|
||||
const seriesB = toDataFrame({
|
||||
refId: 'B',
|
||||
name: 'B',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [2000] },
|
||||
@@ -55,7 +57,7 @@ describe('Merge multiple to single', () => {
|
||||
createField('Time', FieldType.time, [1000, 2000]),
|
||||
createField('Temp', FieldType.number, [1, -1]),
|
||||
];
|
||||
|
||||
expect(result[0].refId).toBe('merge-A-B');
|
||||
expect(unwrap(result[0].fields)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
@@ -77,13 +79,15 @@ describe('Merge multiple to single', () => {
|
||||
],
|
||||
});
|
||||
|
||||
await expect(transformDataFrame([cfg], [seriesA, seriesB])).toEmitValuesWith((received) => {
|
||||
const config = { ...cfg, refId: 'test' };
|
||||
|
||||
await expect(transformDataFrame([config], [seriesA, seriesB])).toEmitValuesWith((received) => {
|
||||
const result = received[0];
|
||||
const expected: Field[] = [
|
||||
createField('Time', FieldType.time, [100, 150, 200, 100, 125, 126]),
|
||||
createField('Temp', FieldType.number, [1, 4, 5, -1, 2, 3]),
|
||||
];
|
||||
|
||||
expect(result[0].refId).toBe('test');
|
||||
expect(unwrap(result[0].fields)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -11,6 +11,7 @@ import { DataTransformerID } from './ids';
|
||||
import { reduceFields, reduceTransformer, ReduceTransformerMode, ReduceTransformerOptions } from './reduce';
|
||||
|
||||
const seriesAWithSingleField = toDataFrame({
|
||||
refId: 'A',
|
||||
name: 'A',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [3000, 4000, 5000, 6000] },
|
||||
@@ -19,6 +20,7 @@ const seriesAWithSingleField = toDataFrame({
|
||||
});
|
||||
|
||||
const seriesAWithMultipleFields = toDataFrame({
|
||||
refId: 'B',
|
||||
name: 'A',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [3000, 4000, 5000, 6000] },
|
||||
@@ -28,6 +30,7 @@ const seriesAWithMultipleFields = toDataFrame({
|
||||
});
|
||||
|
||||
const seriesAWithAllNulls = toDataFrame({
|
||||
refId: 'C',
|
||||
name: 'A',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [3000, 4000, 5000, 6000] },
|
||||
@@ -36,6 +39,7 @@ const seriesAWithAllNulls = toDataFrame({
|
||||
});
|
||||
|
||||
const seriesBWithSingleField = toDataFrame({
|
||||
refId: 'D',
|
||||
name: 'B',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [1000, 3000, 5000, 7000] },
|
||||
@@ -44,6 +48,7 @@ const seriesBWithSingleField = toDataFrame({
|
||||
});
|
||||
|
||||
const seriesBWithMultipleFields = toDataFrame({
|
||||
refId: 'E',
|
||||
name: 'B',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [1000, 3000, 5000, 7000] },
|
||||
@@ -53,6 +58,7 @@ const seriesBWithMultipleFields = toDataFrame({
|
||||
});
|
||||
|
||||
const seriesBWithAllNulls = toDataFrame({
|
||||
refId: 'F',
|
||||
name: 'B',
|
||||
fields: [
|
||||
{ name: 'time', type: FieldType.time, values: [3000, 4000, 5000, 6000] },
|
||||
@@ -65,7 +71,7 @@ describe('Reducer Transformer', () => {
|
||||
mockTransformationsRegistry([reduceTransformer]);
|
||||
});
|
||||
|
||||
it('reduces multiple data frames with many fields', async () => {
|
||||
it('reduces multiple data frames with many fields and dynamic refId', async () => {
|
||||
const cfg = {
|
||||
id: DataTransformerID.reduce,
|
||||
options: {
|
||||
@@ -135,6 +141,7 @@ describe('Reducer Transformer', () => {
|
||||
},
|
||||
];
|
||||
|
||||
expect(processed[0].refId).toBe('reduce-B-E');
|
||||
expect(processed.length).toEqual(1);
|
||||
expect(processed[0].length).toEqual(4);
|
||||
expect(processed[0].fields).toEqual(expected);
|
||||
@@ -142,12 +149,13 @@ describe('Reducer Transformer', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('reduces multiple data frames with single field', async () => {
|
||||
it('reduces multiple data frames with single field and static refId', async () => {
|
||||
const cfg = {
|
||||
id: DataTransformerID.reduce,
|
||||
options: {
|
||||
reducers: [ReducerID.first, ReducerID.min, ReducerID.max, ReducerID.last],
|
||||
},
|
||||
refId: 'test',
|
||||
};
|
||||
|
||||
await expect(transformDataFrame([cfg], [seriesAWithSingleField, seriesBWithSingleField])).toEmitValuesWith(
|
||||
@@ -187,6 +195,7 @@ describe('Reducer Transformer', () => {
|
||||
];
|
||||
|
||||
expect(processed.length).toEqual(1);
|
||||
expect(processed[0].refId).toBe('test');
|
||||
expect(processed[0].length).toEqual(2);
|
||||
expect(processed[0].fields).toEqual(expected);
|
||||
}
|
||||
|
||||
@@ -39,10 +39,11 @@ describe('Series to rows', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('combine two series into one', async () => {
|
||||
it('combine two series into one with static refId', async () => {
|
||||
const cfg: DataTransformerConfig<SeriesToRowsTransformerOptions> = {
|
||||
id: DataTransformerID.seriesToRows,
|
||||
options: {},
|
||||
refId: 'test',
|
||||
};
|
||||
|
||||
const seriesA = toDataFrame({
|
||||
@@ -69,18 +70,19 @@ describe('Series to rows', () => {
|
||||
createField('Metric', FieldType.string, ['B', 'A']),
|
||||
createField('Value', FieldType.number, [-1, 1]),
|
||||
];
|
||||
|
||||
expect(result[0].refId).toBe('test');
|
||||
expect(unwrap(result[0].fields)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
it('combine two series with multiple values into one', async () => {
|
||||
it('combine two series with multiple values into one with dynamic refid', async () => {
|
||||
const cfg: DataTransformerConfig<SeriesToRowsTransformerOptions> = {
|
||||
id: DataTransformerID.seriesToRows,
|
||||
options: {},
|
||||
};
|
||||
|
||||
const seriesA = toDataFrame({
|
||||
refId: 'A',
|
||||
name: 'A',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [100, 150, 200] },
|
||||
@@ -89,6 +91,7 @@ describe('Series to rows', () => {
|
||||
});
|
||||
|
||||
const seriesB = toDataFrame({
|
||||
refId: 'B',
|
||||
name: 'B',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [100, 125, 126] },
|
||||
@@ -104,7 +107,7 @@ describe('Series to rows', () => {
|
||||
createField('Metric', FieldType.string, ['A', 'A', 'B', 'B', 'A', 'B']),
|
||||
createField('Value', FieldType.number, [5, 4, 3, 2, 1, -1]),
|
||||
];
|
||||
|
||||
expect(result[0].refId).toBe('seriesToRows-A-B');
|
||||
expect(unwrap(result[0].fields)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,58 +3,62 @@ import { toDataFrame, FieldType, DataFrame } from '@grafana/data';
|
||||
import { joinByLabels } from './joinByLabels';
|
||||
|
||||
describe('Join by labels', () => {
|
||||
it('Simple join', () => {
|
||||
const input = [
|
||||
toDataFrame({
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [1, 2] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '111',
|
||||
},
|
||||
values: [10, 200],
|
||||
labels: { what: 'Temp', cluster: 'A', job: 'J1' },
|
||||
const input = [
|
||||
toDataFrame({
|
||||
refId: 'A',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [1, 2] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '111',
|
||||
},
|
||||
],
|
||||
}),
|
||||
toDataFrame({
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [1, 2] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '222',
|
||||
},
|
||||
values: [10, 200],
|
||||
labels: { what: 'Temp', cluster: 'B', job: 'J1' },
|
||||
values: [10, 200],
|
||||
labels: { what: 'Temp', cluster: 'A', job: 'J1' },
|
||||
},
|
||||
],
|
||||
}),
|
||||
toDataFrame({
|
||||
refId: 'B',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [1, 2] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '222',
|
||||
},
|
||||
],
|
||||
}),
|
||||
toDataFrame({
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [22, 28] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '333',
|
||||
},
|
||||
values: [22, 77],
|
||||
labels: { what: 'Speed', cluster: 'B', job: 'J1' },
|
||||
values: [10, 200],
|
||||
labels: { what: 'Temp', cluster: 'B', job: 'J1' },
|
||||
},
|
||||
],
|
||||
}),
|
||||
toDataFrame({
|
||||
refId: 'C',
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time, values: [22, 28] },
|
||||
{
|
||||
name: 'Value',
|
||||
type: FieldType.number,
|
||||
config: {
|
||||
displayNameFromDS: '333',
|
||||
},
|
||||
],
|
||||
}),
|
||||
];
|
||||
values: [22, 77],
|
||||
labels: { what: 'Speed', cluster: 'B', job: 'J1' },
|
||||
},
|
||||
],
|
||||
}),
|
||||
];
|
||||
|
||||
it('Simple join with dynamic refId', () => {
|
||||
const result = joinByLabels(
|
||||
{
|
||||
value: 'what',
|
||||
},
|
||||
input
|
||||
);
|
||||
expect(result.refId).toBe('joinByLabels-A-B-C');
|
||||
expect(result.fields[result.fields.length - 1].config).toMatchInlineSnapshot(`{}`);
|
||||
expect(toRowsSnapshow(result)).toMatchInlineSnapshot(`
|
||||
{
|
||||
@@ -94,6 +98,17 @@ describe('Join by labels', () => {
|
||||
`);
|
||||
});
|
||||
|
||||
it('Simple join with static refId', () => {
|
||||
const result = joinByLabels(
|
||||
{
|
||||
value: 'what',
|
||||
refId: 'test',
|
||||
},
|
||||
input
|
||||
);
|
||||
expect(result.refId).toBe('test');
|
||||
});
|
||||
|
||||
it('Error handling (no labels)', () => {
|
||||
const input = [
|
||||
toDataFrame({
|
||||
|
||||
Reference in New Issue
Block a user