mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* regression analysis first dragt * Swap to better regression libraries * fix name * Interpolate x points instead of using source x points * clean up ui and add feature toggle * fix merge error * change to loop for finding min max, rename resolution * Add docs * add docs and tests * change name to regression analysis * update docs * Fix editor labels * add regression images * fix docs
88 lines
3.0 KiB
TypeScript
88 lines
3.0 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import React from 'react';
|
|
|
|
import { FieldType, toDataFrame } from '@grafana/data';
|
|
|
|
import { ModelType } from './regression';
|
|
import { RegressionTransformerEditor } from './regressionEditor';
|
|
|
|
describe('FieldToConfigMappingEditor', () => {
|
|
it('Should try to set the first time field as X and first number field as Y', async () => {
|
|
const onChangeMock = jest.fn();
|
|
|
|
const df = toDataFrame({
|
|
name: 'data',
|
|
refId: 'A',
|
|
fields: [
|
|
{ name: 'time', type: FieldType.time, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'not this', type: FieldType.time, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'value', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'not this either', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
],
|
|
});
|
|
|
|
render(<RegressionTransformerEditor input={[df]} onChange={onChangeMock} options={{}} />);
|
|
|
|
expect(onChangeMock).toBeCalledTimes(1);
|
|
expect(onChangeMock).toBeCalledWith({ xFieldName: 'time', yFieldName: 'value' });
|
|
});
|
|
|
|
it('Should set the first field as X and the second as Y if there are no time fields', async () => {
|
|
const onChangeMock = jest.fn();
|
|
|
|
const df = toDataFrame({
|
|
name: 'data',
|
|
refId: 'A',
|
|
fields: [
|
|
{ name: 'not this', type: FieldType.string, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'foo', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'bar', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'not this either', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
],
|
|
});
|
|
|
|
render(<RegressionTransformerEditor input={[df]} onChange={onChangeMock} options={{}} />);
|
|
|
|
expect(onChangeMock).toBeCalledTimes(1);
|
|
expect(onChangeMock).toBeCalledWith({ xFieldName: 'foo', yFieldName: 'bar' });
|
|
});
|
|
|
|
it('should display degree if the model is polynomial', async () => {
|
|
const onChangeMock = jest.fn();
|
|
|
|
const df = toDataFrame({
|
|
name: 'data',
|
|
refId: 'A',
|
|
fields: [
|
|
{ name: 'foo', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'bar', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
],
|
|
});
|
|
|
|
render(
|
|
<RegressionTransformerEditor input={[df]} onChange={onChangeMock} options={{ modelType: ModelType.polynomial }} />
|
|
);
|
|
|
|
expect(await screen.findByText('Degree')).toBeInTheDocument();
|
|
});
|
|
|
|
it('should not display degree if the model is linear', async () => {
|
|
const onChangeMock = jest.fn();
|
|
|
|
const df = toDataFrame({
|
|
name: 'data',
|
|
refId: 'A',
|
|
fields: [
|
|
{ name: 'foo', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
{ name: 'bar', type: FieldType.number, values: [0, 1, 2, 3, 4, 5] },
|
|
],
|
|
});
|
|
|
|
render(
|
|
<RegressionTransformerEditor input={[df]} onChange={onChangeMock} options={{ modelType: ModelType.linear }} />
|
|
);
|
|
|
|
expect(await screen.queryByText('Degree')).not.toBeInTheDocument();
|
|
});
|
|
});
|