@@ -90,7 +90,7 @@ func TestBump(t *testing.T) {
90
90
91
91
// When: we execute `coder bump workspace <number without units>`
92
92
err = cmd .ExecuteContext (ctx )
93
- require .NoError (t , err , "unexpected error" )
93
+ require .NoError (t , err )
94
94
95
95
// Then: the deadline of the latest build is updated assuming the units are minutes
96
96
updated , err := client .Workspace (ctx , workspace .ID )
@@ -175,4 +175,44 @@ func TestBump(t *testing.T) {
175
175
require .NoError (t , err )
176
176
require .Zero (t , updated .LatestBuild .Deadline )
177
177
})
178
+
179
+ t .Run ("BumpMinimumDuration" , func (t * testing.T ) {
180
+ t .Parallel ()
181
+
182
+ // Given: we have a workspace with no deadline set
183
+ var (
184
+ err error
185
+ ctx = context .Background ()
186
+ client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
187
+ user = coderdtest .CreateFirstUser (t , client )
188
+ version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
189
+ _ = coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
190
+ project = coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
191
+ workspace = coderdtest .CreateWorkspace (t , client , user .OrganizationID , project .ID )
192
+ cmdArgs = []string {"bump" , workspace .Name , "59s" }
193
+ stdoutBuf = & bytes.Buffer {}
194
+ )
195
+
196
+ // Given: we wait for the workspace to build
197
+ coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
198
+ workspace , err = client .Workspace (ctx , workspace .ID )
199
+ require .NoError (t , err )
200
+
201
+ // Assert test invariant: workspace build has a deadline set equal to now plus ttl
202
+ require .WithinDuration (t , workspace .LatestBuild .Deadline , time .Now ().Add (* workspace .TTL ), time .Minute )
203
+ require .NoError (t , err )
204
+
205
+ cmd , root := clitest .New (t , cmdArgs ... )
206
+ clitest .SetupConfig (t , client , root )
207
+ cmd .SetOut (stdoutBuf )
208
+
209
+ // When: we execute `coder bump workspace 59s`
210
+ err = cmd .ExecuteContext (ctx )
211
+
212
+ // Then: an error is reported and the deadline remains as before
213
+ require .ErrorContains (t , err , "minimum bump duration is 1 minute" )
214
+ updated , err := client .Workspace (ctx , workspace .ID )
215
+ require .NoError (t , err )
216
+ require .WithinDuration (t , workspace .LatestBuild .Deadline , updated .LatestBuild .Deadline , time .Minute )
217
+ })
178
218
}
0 commit comments