Skip to content

Commit fefcf2f

Browse files
committed
Fix invalid option as default parameter
1 parent 9b87a20 commit fefcf2f

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

site/src/utils/richParameters.test.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { TemplateVersionParameter } from "api/typesGenerated"
2+
import { selectInitialRichParametersValues } from "./richParameters"
3+
4+
test("selectInitialRichParametersValues return default value when default build parameter is not valid", () => {
5+
const templateParameters: TemplateVersionParameter[] = [
6+
{
7+
name: "cpu",
8+
display_name: "CPU",
9+
description: "The number of CPU cores",
10+
description_plaintext: "The number of CPU cores",
11+
type: "string",
12+
mutable: true,
13+
default_value: "2",
14+
icon: "/icon/memory.svg",
15+
options: [
16+
{
17+
name: "2 Cores",
18+
description: "",
19+
value: "2",
20+
icon: "",
21+
},
22+
{
23+
name: "4 Cores",
24+
description: "",
25+
value: "4",
26+
icon: "",
27+
},
28+
{
29+
name: "6 Cores",
30+
description: "",
31+
value: "6",
32+
icon: "",
33+
},
34+
{
35+
name: "8 Cores",
36+
description: "",
37+
value: "8",
38+
icon: "",
39+
},
40+
],
41+
required: false,
42+
ephemeral: false,
43+
},
44+
]
45+
46+
const cpuParameter = templateParameters[0]
47+
const [cpuParameterInitialValue] = selectInitialRichParametersValues(
48+
templateParameters,
49+
[{ name: cpuParameter.name, value: "100" }],
50+
)
51+
52+
expect(cpuParameterInitialValue.value).toBe(cpuParameter.default_value)
53+
})

site/src/utils/richParameters.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@ export const selectInitialRichParametersValues = (
1919

2020
if (parameter.options.length > 0) {
2121
parameterValue = parameterValue ?? parameter.options[0].value
22+
const validValues = parameter.options.map((option) => option.value)
2223

2324
if (defaultBuildParameters) {
24-
const buildParameter = defaultBuildParameters.find(
25+
const defaultBuildParameter = defaultBuildParameters.find(
2526
(p) => p.name === parameter.name,
2627
)
2728

28-
if (buildParameter) {
29-
parameterValue = buildParameter?.value
29+
// We don't want invalid values from default parameters to be set
30+
if (
31+
defaultBuildParameter &&
32+
validValues.includes(defaultBuildParameter.value)
33+
) {
34+
parameterValue = defaultBuildParameter?.value
3035
}
3136
}
3237

0 commit comments

Comments
 (0)