Skip to content

Commit 06f56f5

Browse files
Add tests
1 parent a759bb8 commit 06f56f5

2 files changed

Lines changed: 82 additions & 13 deletions

File tree

frontend/src/functions/Formatting.tsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export const convertSimulationToChartData = (simulation: SimulationResults, expe
6969
};
7070
};
7171

72-
const convertSimulationQueriesResultToChartDataTable = (
72+
export const convertSimulationQueriesResultToChartDataTable = (
7373
simulationQueriesResult: UseSimulationQueriesResult
7474
): ChartDataTable[] => {
7575
const chartDataTables: ChartDataTable[] = [];
@@ -92,7 +92,7 @@ const convertSimulationQueriesResultToChartDataTable = (
9292
return chartDataTables;
9393
};
9494

95-
const convertExperimentResultsToChartDataTable = (experimentResults: ExperimentResult[]): ChartDataTable[] => {
95+
export const convertExperimentResultsToChartDataTable = (experimentResults: ExperimentResult[]): ChartDataTable[] => {
9696
return experimentResults.map((result) => ({
9797
label: `${result.name ?? ""}`,
9898
inputsConcentrations: result.initialConcentrations,
@@ -116,6 +116,8 @@ export const downloadPlotDataAsCSV = (
116116

117117
if (allPlotData.length === 0) return;
118118

119+
console.log(allPlotData);
120+
119121
const concentrationKeys = Array.from(
120122
new Set(
121123
allPlotData.flatMap((d) => [...Object.keys(d.inputsConcentrations), ...Object.keys(d.finalConcentration)])
@@ -124,25 +126,19 @@ export const downloadPlotDataAsCSV = (
124126

125127
const parameterKeys = Array.from(new Set(allPlotData.flatMap((d) => Object.keys(d.parameters || {}))));
126128

127-
const filteredConcentrationKeys = concentrationKeys.filter(
128-
(k) =>
129-
allPlotData.some((d) => d.inputsConcentrations[k] !== undefined && d.inputsConcentrations[k] !== null) ||
130-
allPlotData.some((d) => d.finalConcentration[k] !== undefined && d.finalConcentration[k] !== null)
131-
);
132-
133129
const filteredParameterKeys = parameterKeys.filter((k) => allPlotData.some((d) => d.parameters?.[k] !== undefined));
134130

135131
const header = [
136132
"Label",
137-
...filteredConcentrationKeys.map((k) => `Initial_${k}`),
138-
...filteredConcentrationKeys.map((k) => `Final_${k}`),
133+
...concentrationKeys.map((k) => `Initial_${k}`),
134+
...concentrationKeys.map((k) => `Final_${k}`),
139135
...filteredParameterKeys,
140136
];
141137

142138
const rows = allPlotData.map((d) => [
143139
d.label,
144-
...filteredConcentrationKeys.map((k) => d.inputsConcentrations[k] ?? ""),
145-
...filteredConcentrationKeys.map((k) => d.finalConcentration[k] ?? ""),
140+
...concentrationKeys.map((k) => d.inputsConcentrations[k] ?? ""),
141+
...concentrationKeys.map((k) => d.finalConcentration[k] ?? ""),
146142
...filteredParameterKeys.map((k) => d.parameters?.[k] ?? ""),
147143
]);
148144

frontend/tests/functions/Formatting.test.tsx

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
import { describe, expect, it } from "vitest";
2-
import { convertToSubscripts, convertSimulationToChartData } from "../../src/functions/Formatting";
2+
import {
3+
convertToSubscripts,
4+
convertSimulationToChartData,
5+
convertExperimentResultsToChartDataTable,
6+
convertSimulationQueriesResultToChartDataTable,
7+
} from "../../src/functions/Formatting";
38
import { SimulationResults } from "../../src/dto/SimulationResults";
49
import { ModelInput } from "../../src/dto/ModelInput";
10+
import { ExperimentResult } from "../../src/dto/ExperimentResult";
11+
import { UseSimulationQueriesResult } from "../../src/hooks/useSimulationQueriesResult";
512

613
describe("convertToSubscripts", () => {
714
it("should return empty div when provided an empty string", () => {
@@ -42,3 +49,69 @@ describe("convertingSimulationToChartData", () => {
4249
]);
4350
});
4451
});
52+
53+
describe("Table Data Conversion Functions", () => {
54+
describe("convertSimulationQueriesResultToChartDataTable", () => {
55+
it("should correctly convert simulation queries result to chart data table format", () => {
56+
const mockSimulationQueriesResult: UseSimulationQueriesResult = {
57+
data: {
58+
"Experiment 1": [
59+
{
60+
modelInput: {
61+
modelId: "TOCOMO",
62+
concentrations: { CO2: 0.5, H2O: 0.3 },
63+
parameters: { pressure: 1.2, temperature: 298, time: 100 },
64+
},
65+
finalConcentrations: { CO2: 0.4, H2O: 0.4, CH4: 0.2 },
66+
panels: [],
67+
},
68+
],
69+
},
70+
isLoading: false,
71+
};
72+
73+
const result = convertSimulationQueriesResultToChartDataTable(mockSimulationQueriesResult);
74+
75+
expect(result).toHaveLength(1);
76+
expect(result[0]).toEqual({
77+
label: "TOCOMO - Experiment 1",
78+
inputsConcentrations: { CO2: 0.5, H2O: 0.3 },
79+
finalConcentration: { CO2: 0.4, H2O: 0.4, CH4: 0.2 },
80+
parameters: {
81+
pressure: 1.2,
82+
temperature: 298,
83+
time: 100,
84+
},
85+
});
86+
});
87+
});
88+
89+
describe("convertExperimentResultsToChartDataTable", () => {
90+
it("should correctly convert experiment results to chart data table format", () => {
91+
const mockExperimentResults: ExperimentResult[] = [
92+
{
93+
name: "Lab Experiment 1",
94+
time: 120,
95+
temperature: 25, // Celsius
96+
pressure: 1.5,
97+
initialConcentrations: { CO2: 0.6, H2O: 0.2 },
98+
finalConcentrations: { CO2: 0.3, H2O: 0.5, N2: 0.2 },
99+
},
100+
];
101+
102+
const result = convertExperimentResultsToChartDataTable(mockExperimentResults);
103+
104+
expect(result).toHaveLength(1);
105+
expect(result[0]).toEqual({
106+
label: "Lab Experiment 1",
107+
inputsConcentrations: { CO2: 0.6, H2O: 0.2 },
108+
finalConcentration: { CO2: 0.3, H2O: 0.5, N2: 0.2 },
109+
parameters: {
110+
pressure: 1.5,
111+
temperature: 298, // 25 + 273 (converted to Kelvin)
112+
time: 120,
113+
},
114+
});
115+
});
116+
});
117+
});

0 commit comments

Comments
 (0)