@@ -2,8 +2,10 @@ import axios from "axios"
2
2
import {
3
3
MockTemplate ,
4
4
MockTemplateVersionParameter1 ,
5
+ MockTemplateVersionParameter2 ,
5
6
MockWorkspace ,
6
7
MockWorkspaceBuild ,
8
+ MockWorkspaceBuildParameter1 ,
7
9
} from "testHelpers/entities"
8
10
import * as api from "./api"
9
11
import * as TypesGen from "./typesGenerated"
@@ -176,18 +178,52 @@ describe("api.ts", () => {
176
178
} )
177
179
178
180
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
+ let error = new Error ( )
194
+ try {
195
+ await api . updateWorkspace ( MockWorkspace )
196
+ } catch ( e ) {
197
+ error = e as Error
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 ( ( error as api . MissingBuildParameters ) . parameters ) . toEqual ( [
204
+ MockTemplateVersionParameter1 ,
205
+ ] )
206
+ } )
207
+
208
+ it ( "creates a build with the no parameters if it is already filled" , async ( ) => {
179
209
jest
180
210
. spyOn ( api , "postWorkspaceBuild" )
181
211
. mockResolvedValueOnce ( MockWorkspaceBuild )
182
212
jest . spyOn ( api , "getTemplate" ) . mockResolvedValueOnce ( MockTemplate )
183
- jest . spyOn ( api , "getWorkspaceBuildParameters" ) . mockResolvedValueOnce ( [ ] )
213
+ jest
214
+ . spyOn ( api , "getWorkspaceBuildParameters" )
215
+ . mockResolvedValue ( [ MockWorkspaceBuildParameter1 ] )
184
216
jest
185
217
. spyOn ( api , "getTemplateVersionRichParameters" )
186
- . mockResolvedValueOnce ( [ MockTemplateVersionParameter1 ] )
187
-
188
- await expect ( api . updateWorkspace ( MockWorkspace ) ) . rejects . toThrow (
189
- api . MissingBuildParameters ,
190
- )
218
+ . mockResolvedValue ( [
219
+ { ...MockTemplateVersionParameter1 , required : true , mutable : false } ,
220
+ ] )
221
+ await api . 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
+ } )
191
227
} )
192
228
} )
193
229
} )
0 commit comments