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

Commit01a6af9

Browse files
fix(site): Do not require immutable parameters (#6637)
1 parent446bd30 commit01a6af9

File tree

2 files changed

+53
-18
lines changed

2 files changed

+53
-18
lines changed

‎site/src/api/api.test.ts

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import axios from "axios"
22
import{
33
MockTemplate,
44
MockTemplateVersionParameter1,
5+
MockTemplateVersionParameter2,
56
MockWorkspace,
67
MockWorkspaceBuild,
8+
MockWorkspaceBuildParameter1,
79
}from"testHelpers/entities"
810
import*asapifrom"./api"
911
import*asTypesGenfrom"./typesGenerated"
@@ -176,18 +178,52 @@ describe("api.ts", () => {
176178
})
177179

178180
it("fails when having missing parameters",async()=>{
181+
jest
182+
.spyOn(api,"postWorkspaceBuild")
183+
.mockResolvedValue(MockWorkspaceBuild)
184+
jest.spyOn(api,"getTemplate").mockResolvedValue(MockTemplate)
185+
jest.spyOn(api,"getWorkspaceBuildParameters").mockResolvedValue([])
186+
jest
187+
.spyOn(api,"getTemplateVersionRichParameters")
188+
.mockResolvedValue([
189+
MockTemplateVersionParameter1,
190+
{ ...MockTemplateVersionParameter2,mutable:false},
191+
])
192+
193+
leterror=newError()
194+
try{
195+
awaitapi.updateWorkspace(MockWorkspace)
196+
}catch(e){
197+
error=easError
198+
}
199+
200+
expect(error).toBeInstanceOf(api.MissingBuildParameters)
201+
// Verify if the correct missing parameters are being passed
202+
// It should not require immutable parameters
203+
expect((errorasapi.MissingBuildParameters).parameters).toEqual([
204+
MockTemplateVersionParameter1,
205+
])
206+
})
207+
208+
it("creates a build with the no parameters if it is already filled",async()=>{
179209
jest
180210
.spyOn(api,"postWorkspaceBuild")
181211
.mockResolvedValueOnce(MockWorkspaceBuild)
182212
jest.spyOn(api,"getTemplate").mockResolvedValueOnce(MockTemplate)
183-
jest.spyOn(api,"getWorkspaceBuildParameters").mockResolvedValueOnce([])
213+
jest
214+
.spyOn(api,"getWorkspaceBuildParameters")
215+
.mockResolvedValue([MockWorkspaceBuildParameter1])
184216
jest
185217
.spyOn(api,"getTemplateVersionRichParameters")
186-
.mockResolvedValueOnce([MockTemplateVersionParameter1])
187-
188-
awaitexpect(api.updateWorkspace(MockWorkspace)).rejects.toThrow(
189-
api.MissingBuildParameters,
190-
)
218+
.mockResolvedValue([
219+
{ ...MockTemplateVersionParameter1,required:true,mutable:false},
220+
])
221+
awaitapi.updateWorkspace(MockWorkspace)
222+
expect(api.postWorkspaceBuild).toHaveBeenCalledWith(MockWorkspace.id,{
223+
transition:"start",
224+
template_version_id:MockTemplate.active_version_id,
225+
rich_parameter_values:[],
226+
})
191227
})
192228
})
193229
})

‎site/src/api/api.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -946,31 +946,34 @@ export const updateWorkspace = async (
946946
consttemplateParameters=awaitgetTemplateVersionRichParameters(
947947
activeVersionId,
948948
)
949-
const[updatedBuildParameters,missingParameters]=updateBuildParameters(
949+
constmissingParameters=getMissingParameters(
950950
oldBuildParameters,
951951
newBuildParameters,
952952
templateParameters,
953953
)
954+
954955
if(missingParameters.length>0){
955956
thrownewMissingBuildParameters(missingParameters)
956957
}
957958

958959
returnpostWorkspaceBuild(workspace.id,{
959960
transition:"start",
960961
template_version_id:activeVersionId,
961-
rich_parameter_values:updatedBuildParameters,
962+
rich_parameter_values:newBuildParameters,
962963
})
963964
}
964965

965-
constupdateBuildParameters=(
966+
constgetMissingParameters=(
966967
oldBuildParameters:TypesGen.WorkspaceBuildParameter[],
967968
newBuildParameters:TypesGen.WorkspaceBuildParameter[],
968969
templateParameters:TypesGen.TemplateVersionParameter[],
969970
)=>{
970971
constmissingParameters:TypesGen.TemplateVersionParameter[]=[]
971-
constupdatedBuildParameters:TypesGen.WorkspaceBuildParameter[]=[]
972+
constrequiredParameters=templateParameters.filter(
973+
(p)=>p.required&&p.mutable,
974+
)
972975

973-
for(constparameteroftemplateParameters){
976+
for(constparameterofrequiredParameters){
974977
// Check if there is a new value
975978
letbuildParameter=newBuildParameters.find(
976979
(p)=>p.name===parameter.name,
@@ -981,17 +984,13 @@ const updateBuildParameters = (
981984
buildParameter=oldBuildParameters.find((p)=>p.name===parameter.name)
982985
}
983986

984-
// If there is a value from the new or old one,additto the list
987+
// If there is a value from the new or old one, itis not missed
985988
if(buildParameter){
986-
updatedBuildParameters.push(buildParameter)
987989
continue
988990
}
989991

990-
// If there is no value and it is required, add it to the list of missing parameters
991-
if(parameter.required){
992-
missingParameters.push(parameter)
993-
}
992+
missingParameters.push(parameter)
994993
}
995994

996-
return[updatedBuildParameters,missingParameters]asconst
995+
returnmissingParameters
997996
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp