Skip to content

Commit d374bec

Browse files
authored
fix: redirect to new url after template name update (#10926)
* fix: updating template name routes to correct URL * added e2e test
1 parent 88f4490 commit d374bec

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

site/e2e/helpers.ts

+29-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ import { prometheusPort, pprofPort } from "./constants";
1919
import { port } from "./playwright.config";
2020
import * as ssh from "ssh2";
2121
import { Duplex } from "stream";
22-
import { WorkspaceBuildParameter } from "api/typesGenerated";
22+
import {
23+
WorkspaceBuildParameter,
24+
UpdateTemplateMeta,
25+
} from "api/typesGenerated";
2326
import axios from "axios";
27+
import capitalize from "lodash/capitalize";
2428

2529
// createWorkspace creates a workspace for a template.
2630
// It does not wait for it to be running, but it does navigate to the page.
@@ -709,6 +713,30 @@ export const updateTemplate = async (
709713
await uploaded.wait();
710714
};
711715

716+
export const updateTemplateSettings = async (
717+
page: Page,
718+
templateName: string,
719+
templateSettingValues: Pick<
720+
UpdateTemplateMeta,
721+
"name" | "display_name" | "description"
722+
>,
723+
) => {
724+
await page.goto(`/templates/${templateName}/settings`, {
725+
waitUntil: "domcontentloaded",
726+
});
727+
await expect(page).toHaveURL(`/templates/${templateName}/settings`);
728+
729+
for (const [key, value] of Object.entries(templateSettingValues)) {
730+
const labelText = capitalize(key).replace("_", " ");
731+
await page.getByLabel(labelText, { exact: true }).fill(value);
732+
}
733+
734+
await page.getByTestId("form-submit").click();
735+
736+
const name = templateSettingValues.name ?? templateName;
737+
await expect(page).toHaveURL(`/templates/${name}`);
738+
};
739+
712740
export const updateWorkspace = async (
713741
page: Page,
714742
workspaceName: string,

site/e2e/tests/updateTemplate.spec.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { test } from "@playwright/test";
2+
import { createTemplate, updateTemplateSettings } from "../helpers";
3+
4+
test("template update with new name redirects on successful submit", async ({
5+
page,
6+
}) => {
7+
const templateName = await createTemplate(page);
8+
9+
await updateTemplateSettings(page, templateName, {
10+
name: "new-name",
11+
});
12+
});

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@ export const TemplateSettingsPage: FC = () => {
3232
} = useMutation(
3333
(data: UpdateTemplateMeta) => updateTemplateMeta(template.id, data),
3434
{
35-
onSuccess: async () => {
35+
onSuccess: async (data) => {
36+
// we use data.name because an admin may have updated templateName to something new
3637
await queryClient.invalidateQueries(
37-
templateByNameKey(orgId, templateName),
38+
templateByNameKey(orgId, data.name),
3839
);
3940
displaySuccess("Template updated successfully");
41+
navigate(`/templates/${data.name}`);
4042
},
4143
},
4244
);

0 commit comments

Comments
 (0)