Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7f67000

Browse files
fix(site): send build parameters over the confirmation dialog on restart (#8660)
1 parent30fe153 commit7f67000

File tree

4 files changed

+98
-21
lines changed

4 files changed

+98
-21
lines changed

‎site/src/components/WorkspaceActions/BuildParametersPopover.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const BuildParametersPopover = ({
4747
return(
4848
<>
4949
<Button
50+
data-testid="build-parameters-button"
5051
disabled={disabled}
5152
color="neutral"
5253
sx={{px:0}}
@@ -159,7 +160,7 @@ const Form = ({
159160
constgetFieldHelpers=getFormHelpers(form)
160161

161162
return(
162-
<formonSubmit={form.handleSubmit}>
163+
<formonSubmit={form.handleSubmit}data-testid="build-parameters-form">
163164
<FormFields>
164165
{ephemeralParameters.map((parameter,index)=>{
165166
return(
@@ -182,6 +183,7 @@ const Form = ({
182183
</FormFields>
183184
<Boxsx={{py:3,pb:1}}>
184185
<Button
186+
data-testid="build-parameters-submit"
185187
type="submit"
186188
variant="contained"
187189
color="primary"

‎site/src/pages/WorkspacePage/WorkspacePage.test.tsx

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,4 +411,80 @@ describe("WorkspacePage", () => {
411411
awaitrenderWorkspacePage()
412412
awaitscreen.findByTestId("error-unsupported-workspaces")
413413
})
414+
415+
it("restart the workspace with one time parameters when having the confirmation dialog",async()=>{
416+
window.localStorage.removeItem(`${MockUser.id}_ignoredWarnings`)
417+
jest.spyOn(api,"getWorkspaceParameters").mockResolvedValue({
418+
templateVersionRichParameters:[
419+
{
420+
...MockTemplateVersionParameter1,
421+
ephemeral:true,
422+
name:"rebuild",
423+
description:"Rebuild",
424+
required:false,
425+
},
426+
],
427+
buildParameters:[{name:"rebuild",value:"false"}],
428+
})
429+
constrestartWorkspaceSpy=jest.spyOn(api,"restartWorkspace")
430+
constuser=userEvent.setup()
431+
awaitrenderWorkspacePage()
432+
awaituser.click(screen.getByTestId("build-parameters-button"))
433+
constbuildParametersForm=awaitscreen.findByTestId(
434+
"build-parameters-form",
435+
)
436+
constrebuildField=within(buildParametersForm).getByLabelText("Rebuild",{
437+
exact:false,
438+
})
439+
awaituser.clear(rebuildField)
440+
awaituser.type(rebuildField,"true")
441+
awaituser.click(screen.getByTestId("build-parameters-submit"))
442+
awaituser.click(screen.getByTestId("confirm-button"))
443+
awaitwaitFor(()=>{
444+
expect(restartWorkspaceSpy).toBeCalledWith({
445+
workspace:MockWorkspace,
446+
buildParameters:[{name:"rebuild",value:"true"}],
447+
})
448+
})
449+
})
450+
451+
it("restart the workspace with one time parameters without the confirmation dialog",async()=>{
452+
window.localStorage.setItem(
453+
`${MockUser.id}_ignoredWarnings`,
454+
JSON.stringify({
455+
restart:newDate().toISOString(),
456+
}),
457+
)
458+
jest.spyOn(api,"getWorkspaceParameters").mockResolvedValue({
459+
templateVersionRichParameters:[
460+
{
461+
...MockTemplateVersionParameter1,
462+
ephemeral:true,
463+
name:"rebuild",
464+
description:"Rebuild",
465+
required:false,
466+
},
467+
],
468+
buildParameters:[{name:"rebuild",value:"false"}],
469+
})
470+
constrestartWorkspaceSpy=jest.spyOn(api,"restartWorkspace")
471+
constuser=userEvent.setup()
472+
awaitrenderWorkspacePage()
473+
awaituser.click(screen.getByTestId("build-parameters-button"))
474+
constbuildParametersForm=awaitscreen.findByTestId(
475+
"build-parameters-form",
476+
)
477+
constrebuildField=within(buildParametersForm).getByLabelText("Rebuild",{
478+
exact:false,
479+
})
480+
awaituser.clear(rebuildField)
481+
awaituser.type(rebuildField,"true")
482+
awaituser.click(screen.getByTestId("build-parameters-submit"))
483+
awaitwaitFor(()=>{
484+
expect(restartWorkspaceSpy).toBeCalledWith({
485+
workspace:MockWorkspace,
486+
buildParameters:[{name:"rebuild",value:"true"}],
487+
})
488+
})
489+
})
414490
})

‎site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ import {
2727
}from"../../xServices/workspace/workspaceXService"
2828
import{UpdateBuildParametersDialog}from"./UpdateBuildParametersDialog"
2929
import{ChangeVersionDialog}from"./ChangeVersionDialog"
30-
import{useQuery}from"@tanstack/react-query"
31-
import{getTemplateVersions}from"api/api"
32-
import{useRestartWorkspace}from"./hooks"
30+
import{useMutation,useQuery}from"@tanstack/react-query"
31+
import{getTemplateVersions,restartWorkspace}from"api/api"
3332
import{
3433
ConfirmDialog,
3534
ConfirmDialogProps,
@@ -89,7 +88,10 @@ export const WorkspaceReadyPage = ({
8988
enabled:changeVersionDialogOpen,
9089
})
9190
const[isConfirmingUpdate,setIsConfirmingUpdate]=useState(false)
92-
const[isConfirmingRestart,setIsConfirmingRestart]=useState(false)
91+
const[confirmingRestart,setConfirmingRestart]=useState<{
92+
open:boolean
93+
buildParameters?:TypesGen.WorkspaceBuildParameter[]
94+
}>({open:false})
9395
constuser=useMe()
9496
const{ isWarningIgnored, ignoreWarning}=useIgnoreWarnings(user.id)
9597
constbuildLogs=useBuildLogs(workspace)
@@ -99,10 +101,12 @@ export const WorkspaceReadyPage = ({
99101
workspace.latest_build.status,
100102
)
101103
const{
102-
mutate:restartWorkspace,
104+
mutate:mutateRestartWorkspace,
103105
error:restartBuildError,
104106
isLoading:isRestarting,
105-
}=useRestartWorkspace()
107+
}=useMutation({
108+
mutationFn:restartWorkspace,
109+
})
106110
// keep banner machine in sync with workspace
107111
useEffect(()=>{
108112
bannerSend({type:"REFRESH_WORKSPACE", workspace})
@@ -154,9 +158,9 @@ export const WorkspaceReadyPage = ({
154158
handleDelete={()=>workspaceSend({type:"ASK_DELETE"})}
155159
handleRestart={(buildParameters)=>{
156160
if(isWarningIgnored("restart")){
157-
restartWorkspace({ workspace, buildParameters})
161+
mutateRestartWorkspace({ workspace, buildParameters})
158162
}else{
159-
setIsConfirmingRestart(true)
163+
setConfirmingRestart({open:true, buildParameters})
160164
}
161165
}}
162166
handleUpdate={()=>{
@@ -253,15 +257,18 @@ export const WorkspaceReadyPage = ({
253257
/>
254258

255259
<WarningDialog
256-
open={isConfirmingRestart}
260+
open={confirmingRestart.open}
257261
onConfirm={(shouldIgnore)=>{
258262
if(shouldIgnore){
259263
ignoreWarning("restart")
260264
}
261-
restartWorkspace({ workspace})
262-
setIsConfirmingRestart(false)
265+
mutateRestartWorkspace({
266+
workspace,
267+
buildParameters:confirmingRestart.buildParameters,
268+
})
269+
setConfirmingRestart({open:false})
263270
}}
264-
onClose={()=>setIsConfirmingRestart(false)}
271+
onClose={()=>setConfirmingRestart({open:false})}
265272
title="Confirm restart"
266273
confirmText="Restart"
267274
description="Are you sure you want to restart your workspace? Updating your workspace will stop all running processes and delete non-persistent data."

‎site/src/pages/WorkspacePage/hooks.ts

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp