Skip to content

Commit 15a6058

Browse files
committed
Convert tests to RTL
1 parent cac9b25 commit 15a6058

22 files changed

Lines changed: 383 additions & 407 deletions

elisa/src/client/RunDetails/RunDetails.spec.tsx

Lines changed: 0 additions & 83 deletions
This file was deleted.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import React from 'react';
2+
import { render, waitFor } from '@testing-library/react';
3+
4+
import { RunDetailsImpl } from './RunDetails';
5+
import { TEST_PLOT_DATA } from './utils.test';
6+
import { REQUIRED_COLUMN_NAMES } from './constants';
7+
8+
class MockClass {
9+
render() {
10+
}
11+
}
12+
13+
LABKEY.vis = {
14+
Geom: {
15+
Path: MockClass,
16+
Point: MockClass,
17+
},
18+
Layer: MockClass,
19+
Plot: MockClass,
20+
};
21+
22+
describe('RunDetailsImpl', () => {
23+
test('check initial display', async () => {
24+
render(
25+
<RunDetailsImpl
26+
columnInfo={REQUIRED_COLUMN_NAMES.reduce((columnInfo, name) => {
27+
columnInfo[name] = {};
28+
return columnInfo;
29+
}, {})}
30+
data={TEST_PLOT_DATA}
31+
getCurveFitXYPairs={jest.fn().mockResolvedValue({})}
32+
measures={[]}
33+
protocolId={1}
34+
runId={2}
35+
runPropertiesRow={undefined}
36+
/>
37+
);
38+
await waitFor(() => {
39+
expect(document.querySelectorAll('.run-details-left')).toHaveLength(1);
40+
});
41+
42+
expect(document.querySelectorAll('.data-selections-panel')).toHaveLength(1);
43+
expect(document.querySelectorAll('.plot-options-panel')).toHaveLength(1);
44+
expect(document.querySelectorAll('.curve-fit-panel')).toHaveLength(1);
45+
expect(document.querySelectorAll('.run-details-right')).toHaveLength(1);
46+
expect(document.querySelectorAll('.calibration-curve-panel')).toHaveLength(1);
47+
expect(document.querySelectorAll('.alert')).toHaveLength(0);
48+
});
49+
50+
test('missing field keys', async () => {
51+
render(
52+
<RunDetailsImpl
53+
columnInfo={{}}
54+
data={TEST_PLOT_DATA}
55+
measures={[]}
56+
protocolId={1}
57+
runId={2}
58+
runPropertiesRow={undefined}
59+
/>
60+
);
61+
await waitFor(() => {
62+
expect(document.querySelectorAll('.alert')).toHaveLength(1);
63+
});
64+
65+
expect(document.querySelector('.alert')).toHaveTextContent(REQUIRED_COLUMN_NAMES.join(', '));
66+
});
67+
});

elisa/src/client/RunDetails/RunDetails.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
parsePlotDataFromResponse,
1919
shouldReloadCurveFitData
2020
} from "./utils";
21-
import { getCurveFitXYPairs } from "./actions";
21+
import { GetCurveFitXYPairs, getCurveFitXYPairs } from './actions';
2222
import { CalibrationCurvePanel } from "./components/CalibrationCurvePanel";
2323
import { DataSelectionsPanel } from "./components/DataSelectionsPanel";
2424
import { PlotOptionsPanel } from "./components/PlotOptionsPanel";
@@ -138,6 +138,7 @@ export class RunDetails extends PureComponent<Props, State> {
138138
interface ImplProps extends CommonRunProps {
139139
data: any[],
140140
columnInfo: {[key: string]: any},
141+
getCurveFitXYPairs?: GetCurveFitXYPairs;
141142
measures: string[]
142143
}
143144

@@ -153,6 +154,10 @@ interface ImplState {
153154

154155
// exported just for jest testing
155156
export class RunDetailsImpl extends PureComponent<ImplProps, ImplState> {
157+
static defaultProps = {
158+
getCurveFitXYPairs: getCurveFitXYPairs,
159+
};
160+
156161
constructor(props: ImplProps) {
157162
super(props);
158163

@@ -188,7 +193,7 @@ export class RunDetailsImpl extends PureComponent<ImplProps, ImplState> {
188193
const { plotOptions } = this.state;
189194
const filteredData = filterDataByPlotOptions(data, [], [], plotOptions, false);
190195

191-
getCurveFitXYPairs(protocolId, runId, plotOptions.plateName, plotOptions.spot, filteredData)
196+
this.props.getCurveFitXYPairs(protocolId, runId, plotOptions.plateName, plotOptions.spot, filteredData)
192197
.then(curveFitData => {
193198
this.setState(() => ({ curveFitData }));
194199
})

elisa/src/client/RunDetails/actions.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ import { CurveFitData } from "./models";
44
import { getMaxFromData, getMinFromData } from "./utils";
55
import { DEFAULT_X_AXIS_PROP } from "./constants";
66

7-
export function getCurveFitXYPairs(protocolId: number, runId: number, plateName: string, spot: number, data: any[]): Promise<CurveFitData> {
7+
export type GetCurveFitXYPairs = (
8+
protocolId: number,
9+
runId: number,
10+
plateName: string,
11+
spot: number,
12+
data: any[]
13+
) => Promise<CurveFitData>;
14+
15+
export const getCurveFitXYPairs: GetCurveFitXYPairs = (protocolId, runId, plateName, spot, data) => {
816
return new Promise((resolve, reject) => {
917
const xMin = getMinFromData(data, DEFAULT_X_AXIS_PROP);
1018
let xMax = getMaxFromData(data, DEFAULT_X_AXIS_PROP);

elisa/src/client/RunDetails/components/CalibrationCurvePanel.spec.tsx

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React from 'react';
2+
import { render } from '@testing-library/react';
3+
import { CalibrationCurvePanel } from './CalibrationCurvePanel';
4+
import { getDefaultPlotOptions } from '../utils';
5+
6+
describe('CalibrationCurvePanel', () => {
7+
test('default props', () => {
8+
render(
9+
<CalibrationCurvePanel
10+
columnInfo={{}}
11+
curveFitData={undefined}
12+
data={[]}
13+
plotOptions={getDefaultPlotOptions([], [])}
14+
protocolId={1}
15+
runId={2}
16+
runPropertiesRow={{}}
17+
/>
18+
);
19+
20+
expect(document.querySelectorAll('.calibration-curve-panel')).toHaveLength(1);
21+
expect(document.querySelectorAll('.plot-panel-display')).toHaveLength(1);
22+
expect(document.querySelectorAll('.plot-button-bar')).toHaveLength(1);
23+
});
24+
});

elisa/src/client/RunDetails/components/CalibrationCurvePanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class CalibrationCurvePanel extends PureComponent<Props, State> {
6565

6666
render() {
6767
return (
68-
<div className="panel panel-default">
68+
<div className="panel panel-default calibration-curve-panel">
6969
<div className="panel-heading">
7070
Calibration Curve
7171
</div>

elisa/src/client/RunDetails/components/CurveFitDataDisplay.spec.tsx

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)