Skip to content

Commit 1a1d0fa

Browse files
committed
Fmt and fix e2e test
1 parent e61491b commit 1a1d0fa

File tree

11 files changed

+65
-47
lines changed

11 files changed

+65
-47
lines changed

site/e2e/parameters.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ export const seventhParameter: RichParameter = {
130130

131131
// randParamName returns a new parameter with a random name.
132132
export const randParamName = (p: RichParameter): RichParameter => {
133-
p.name += Math.random().toString(36).substring(7);
134-
return p;
133+
const name = p.name + Math.random().toString(36).substring(7);
134+
return { ...p, name: name };
135135
};
136136

137137
// Build options

site/e2e/tests/restartWorkspace.spec.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,21 @@ import {
77
verifyParameters,
88
} from "../helpers";
99

10-
import { firstBuildOption, secondBuildOption } from "../parameters";
10+
import {
11+
firstBuildOption,
12+
randParamName,
13+
secondBuildOption,
14+
} from "../parameters";
1115
import { RichParameter } from "../provisionerGenerated";
1216
import { beforeCoderTest } from "../hooks";
1317

1418
test.beforeEach(async ({ page }) => await beforeCoderTest(page));
1519

1620
test("restart workspace with ephemeral parameters", async ({ page }) => {
17-
const richParameters: RichParameter[] = [firstBuildOption, secondBuildOption];
21+
const richParameters: RichParameter[] = [
22+
randParamName(firstBuildOption),
23+
randParamName(secondBuildOption),
24+
];
1825
const template = await createTemplate(
1926
page,
2027
echoResponsesWithParameters(richParameters),
@@ -23,14 +30,14 @@ test("restart workspace with ephemeral parameters", async ({ page }) => {
2330

2431
// Verify that build options are default (not selected).
2532
await verifyParameters(page, workspaceName, richParameters, [
26-
{ name: firstBuildOption.name, value: firstBuildOption.defaultValue },
27-
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
33+
{ name: richParameters[0].name, value: firstBuildOption.defaultValue },
34+
{ name: richParameters[1].name, value: secondBuildOption.defaultValue },
2835
]);
2936

3037
// Now, restart the workspace with ephemeral parameters selected.
3138
const buildParameters = [
32-
{ name: firstBuildOption.name, value: "AAAAA" },
33-
{ name: secondBuildOption.name, value: "true" },
39+
{ name: richParameters[0].name, value: "AAAAA" },
40+
{ name: richParameters[1].name, value: "true" },
3441
];
3542
await buildWorkspaceWithParameters(
3643
page,

site/e2e/tests/startWorkspace.spec.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ import {
88
verifyParameters,
99
} from "../helpers";
1010

11-
import { firstBuildOption, secondBuildOption } from "../parameters";
11+
import {
12+
firstBuildOption,
13+
randParamName,
14+
secondBuildOption,
15+
} from "../parameters";
1216
import { RichParameter } from "../provisionerGenerated";
1317

1418
test("start workspace with ephemeral parameters", async ({ page }) => {
15-
const richParameters: RichParameter[] = [firstBuildOption, secondBuildOption];
19+
const richParameters: RichParameter[] = [
20+
randParamName(firstBuildOption),
21+
randParamName(secondBuildOption),
22+
];
1623
const template = await createTemplate(
1724
page,
1825
echoResponsesWithParameters(richParameters),
@@ -21,17 +28,17 @@ test("start workspace with ephemeral parameters", async ({ page }) => {
2128

2229
// Verify that build options are default (not selected).
2330
await verifyParameters(page, workspaceName, richParameters, [
24-
{ name: firstBuildOption.name, value: firstBuildOption.defaultValue },
25-
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
31+
{ name: richParameters[0].name, value: firstBuildOption.defaultValue },
32+
{ name: richParameters[1].name, value: secondBuildOption.defaultValue },
2633
]);
2734

2835
// Stop the workspace
2936
await stopWorkspace(page, workspaceName);
3037

3138
// Now, start the workspace with ephemeral parameters selected.
3239
const buildParameters = [
33-
{ name: firstBuildOption.name, value: "AAAAA" },
34-
{ name: secondBuildOption.name, value: "true" },
40+
{ name: richParameters[0].name, value: "AAAAA" },
41+
{ name: richParameters[1].name, value: "true" },
3542
];
3643

3744
await buildWorkspaceWithParameters(

site/src/api/typesGenerated.ts

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/components/RichParameterInput/RichParameterInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export const RichParameterInput: FC<RichParameterInputProps> = ({
159159
<ParameterLabel parameter={parameter} />
160160
<div css={{ display: "flex", flexDirection: "column" }}>
161161
<RichParameterField {...fieldProps} size={size} parameter={parameter} />
162-
{autofillSource && (
162+
{autofillSource && autofillSource !== "active_build" && (
163163
<div css={{ marginTop: 4, fontSize: 12 }}>
164164
🪄 Autofilled:{" "}
165165
{

site/src/components/TemplateParameters/TemplateParameters.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { AutofillSource } from "utils/richParameters";
99

1010
export type TemplateParametersSectionProps = {
1111
templateParameters: TemplateVersionParameter[];
12-
defaultReasons?: Record<string, AutofillSource>;
12+
autofillSources?: Record<string, AutofillSource>;
1313
getInputProps: (
1414
parameter: TemplateVersionParameter,
1515
index: number,
@@ -21,7 +21,7 @@ export const MutableTemplateParametersSection: FC<
2121
> = ({
2222
templateParameters,
2323
getInputProps,
24-
defaultReasons,
24+
autofillSources: defaultReasons,
2525
...formSectionProps
2626
}) => {
2727
const hasMutableParameters =

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
127127
error,
128128
);
129129

130-
const defaultSources = useMemo(() => {
130+
const autofillSources = useMemo(() => {
131131
return autofillParameters.reduce(
132132
(acc, param) => {
133133
acc[param.name] = param.source;
@@ -223,7 +223,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
223223
{parameters && (
224224
<>
225225
<MutableTemplateParametersSection
226-
defaultReasons={defaultSources}
226+
autofillSources={autofillSources}
227227
templateParameters={parameters}
228228
getInputProps={(parameter, index) => {
229229
return {
@@ -244,7 +244,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
244244
}}
245245
/>
246246
<ImmutableTemplateParametersSection
247-
defaultReasons={defaultSources}
247+
autofillSources={autofillSources}
248248
templateParameters={parameters}
249249
classes={{
250250
root: css`

site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ import {
2121
import { useFormik } from "formik";
2222
import { docs } from "utils/docs";
2323
import { getFormHelpers } from "utils/formUtils";
24-
import { getInitialRichParameterValues } from "utils/richParameters";
24+
import {
25+
AutofillBuildParameter,
26+
getInitialRichParameterValues,
27+
} from "utils/richParameters";
2528
import {
2629
Popover,
2730
PopoverContent,
@@ -113,7 +116,12 @@ const BuildParametersPopoverContent: FC<BuildParametersPopoverContentProps> = ({
113116
popover.setIsOpen(false);
114117
}}
115118
ephemeralParameters={ephemeralParameters}
116-
buildParameters={buildParameters}
119+
buildParameters={buildParameters.map(
120+
(p): AutofillBuildParameter => ({
121+
...p,
122+
source: "active_build",
123+
}),
124+
)}
117125
/>
118126
</div>
119127
</>
@@ -147,7 +155,7 @@ const BuildParametersPopoverContent: FC<BuildParametersPopoverContentProps> = ({
147155

148156
interface FormProps {
149157
ephemeralParameters: TemplateVersionParameter[];
150-
buildParameters: WorkspaceBuildParameter[];
158+
buildParameters: AutofillBuildParameter[];
151159
onSubmit: (buildParameters: WorkspaceBuildParameter[]) => void;
152160
}
153161

site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
} from "components/Form/Form";
1111
import { RichParameterInput } from "components/RichParameterInput/RichParameterInput";
1212
import {
13+
AutofillBuildParameter,
1314
getInitialRichParameterValues,
1415
useValidationSchemaForRichParameters,
1516
} from "utils/richParameters";
@@ -27,7 +28,7 @@ export type WorkspaceParametersFormValues = {
2728
interface WorkspaceParameterFormProps {
2829
workspace: Workspace;
2930
templateVersionRichParameters: TemplateVersionParameter[];
30-
buildParameters: WorkspaceBuildParameter[];
31+
autofillParams: AutofillBuildParameter[];
3132
isSubmitting: boolean;
3233
canChangeVersions: boolean;
3334
error: unknown;
@@ -40,7 +41,7 @@ export const WorkspaceParametersForm: FC<WorkspaceParameterFormProps> = ({
4041
onCancel,
4142
onSubmit,
4243
templateVersionRichParameters,
43-
buildParameters,
44+
autofillParams,
4445
error,
4546
canChangeVersions,
4647
isSubmitting,
@@ -50,7 +51,7 @@ export const WorkspaceParametersForm: FC<WorkspaceParameterFormProps> = ({
5051
initialValues: {
5152
rich_parameter_values: getInitialRichParameterValues(
5253
templateVersionRichParameters,
53-
buildParameters,
54+
autofillParams,
5455
),
5556
},
5657
validationSchema: Yup.object({

site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { EmptyState } from "components/EmptyState/EmptyState";
2424
import Button from "@mui/material/Button";
2525
import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined";
2626
import { docs } from "utils/docs";
27+
import { AutofillBuildParameter } from "utils/richParameters";
2728

2829
const WorkspaceParametersPage: FC = () => {
2930
const workspace = useWorkspaceSettings();
@@ -126,7 +127,12 @@ export const WorkspaceParametersPageView: FC<
126127
<WorkspaceParametersForm
127128
workspace={workspace}
128129
canChangeVersions={canChangeVersions}
129-
buildParameters={data.buildParameters}
130+
autofillParams={data.buildParameters.map(
131+
(p): AutofillBuildParameter => ({
132+
...p,
133+
source: "active_build",
134+
}),
135+
)}
130136
templateVersionRichParameters={data.templateVersionRichParameters}
131137
error={submitError}
132138
isSubmitting={isSubmitting}

site/src/utils/richParameters.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import {
44
} from "api/typesGenerated";
55
import * as Yup from "yup";
66

7-
export type AutofillSource = "user_history" | "url";
7+
export type AutofillSource = "user_history" | "url" | "active_build";
88

9+
// AutofillBuildParameter is a build parameter destined to a form, alongside
10+
// its source so that the form can explain where the value comes from.
911
export type AutofillBuildParameter = {
1012
source: AutofillSource;
1113
} & WorkspaceBuildParameter;
@@ -19,21 +21,10 @@ export const getInitialRichParameterValues = (
1921
(p) => p.name === parameter.name,
2022
);
2123
if (autofillParam !== undefined && isValidValue(parameter, autofillParam)) {
22-
// URL takes precedence over all other sources.
23-
if (autofillParam.source === "url") {
24-
return {
25-
name: parameter.name,
26-
value: autofillParam.value,
27-
};
28-
}
29-
30-
// Need to decide whether user_history is more important than default value.
31-
if (autofillParam.source === "user_history") {
32-
return {
33-
name: parameter.name,
34-
value: autofillParam.value,
35-
};
36-
}
24+
return {
25+
name: parameter.name,
26+
value: autofillParam.value,
27+
};
3728
}
3829

3930
return {

0 commit comments

Comments
 (0)