@@ -1256,6 +1256,52 @@ func TestWorkspaceWatcher(t *testing.T) {
1256
1256
require .EqualValues (t , codersdk.Workspace {}, <- wc )
1257
1257
}
1258
1258
1259
+ func TestWorkspaceStatus (t * testing.T ) {
1260
+ t .Parallel ()
1261
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
1262
+ defer cancel ()
1263
+ var (
1264
+ client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1265
+ user = coderdtest .CreateFirstUser (t , client )
1266
+ version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
1267
+ _ = coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1268
+ template = coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
1269
+ workspace = coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
1270
+ )
1271
+
1272
+ // initial returned state is "pending"
1273
+ require .EqualValues (t , codersdk .WorkspaceStatusPending , workspace .Status )
1274
+
1275
+ // after successful build is "running"
1276
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
1277
+ workspace , err := client .Workspace (ctx , workspace .ID )
1278
+ require .NoError (t , err )
1279
+ require .EqualValues (t , codersdk .WorkspaceStatusRunning , workspace .Status )
1280
+
1281
+ // after successful stop is "stopped"
1282
+ build := coderdtest .CreateWorkspaceBuild (t , client , workspace , database .WorkspaceTransitionStop )
1283
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , build .ID )
1284
+ workspace , err = client .Workspace (ctx , workspace .ID )
1285
+ require .NoError (t , err )
1286
+ require .EqualValues (t , codersdk .WorkspaceStatusStopped , workspace .Status )
1287
+
1288
+ // after successful cancel is "canceled"
1289
+ build = coderdtest .CreateWorkspaceBuild (t , client , workspace , database .WorkspaceTransitionStart )
1290
+ err = client .CancelWorkspaceBuild (ctx , build .ID )
1291
+ require .NoError (t , err )
1292
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , build .ID )
1293
+ workspace , err = client .Workspace (ctx , workspace .ID )
1294
+ require .NoError (t , err )
1295
+ require .EqualValues (t , codersdk .WorkspaceStatusCanceled , workspace .Status )
1296
+
1297
+ // after successful delete is "deleted"
1298
+ build = coderdtest .CreateWorkspaceBuild (t , client , workspace , database .WorkspaceTransitionDelete )
1299
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , build .ID )
1300
+ workspace , err = client .DeletedWorkspace (ctx , workspace .ID )
1301
+ require .NoError (t , err )
1302
+ require .EqualValues (t , codersdk .WorkspaceStatusDeleted , workspace .Status )
1303
+ }
1304
+
1259
1305
func mustLocation (t * testing.T , location string ) * time.Location {
1260
1306
t .Helper ()
1261
1307
loc , err := time .LoadLocation (location )
0 commit comments