TransitionWorkspace is a convenience method for transitioning a workspace from one state to another.
(t testing.TB, client *codersdk.Client, workspaceID uuid.UUID, from, to codersdk.WorkspaceTransition, muts ...func(req *codersdk.CreateWorkspaceBuildRequest))
| 1461 | |
| 1462 | // TransitionWorkspace is a convenience method for transitioning a workspace from one state to another. |
| 1463 | func MustTransitionWorkspace(t testing.TB, client *codersdk.Client, workspaceID uuid.UUID, from, to codersdk.WorkspaceTransition, muts ...func(req *codersdk.CreateWorkspaceBuildRequest)) codersdk.Workspace { |
| 1464 | t.Helper() |
| 1465 | ctx := context.Background() |
| 1466 | workspace, err := client.Workspace(ctx, workspaceID) |
| 1467 | require.NoError(t, err, "unexpected error fetching workspace") |
| 1468 | require.Equal(t, workspace.LatestBuild.Transition, from, "expected workspace state: %s got: %s", from, workspace.LatestBuild.Transition) |
| 1469 | |
| 1470 | req := codersdk.CreateWorkspaceBuildRequest{ |
| 1471 | TemplateVersionID: workspace.LatestBuild.TemplateVersionID, |
| 1472 | Transition: to, |
| 1473 | } |
| 1474 | |
| 1475 | for _, mut := range muts { |
| 1476 | mut(&req) |
| 1477 | } |
| 1478 | |
| 1479 | build, err := client.CreateWorkspaceBuild(ctx, workspace.ID, req) |
| 1480 | require.NoError(t, err, "unexpected error transitioning workspace to %s", to) |
| 1481 | |
| 1482 | _ = AwaitWorkspaceBuildJobCompleted(t, client, build.ID) |
| 1483 | |
| 1484 | updated := MustWorkspace(t, client, workspace.ID) |
| 1485 | require.Equal(t, to, updated.LatestBuild.Transition, "expected workspace to be in state %s but got %s", to, updated.LatestBuild.Transition) |
| 1486 | return updated |
| 1487 | } |
| 1488 | |
| 1489 | // MustWorkspace is a convenience method for fetching a workspace that should exist. |
| 1490 | func MustWorkspace(t testing.TB, client *codersdk.Client, workspaceID uuid.UUID) codersdk.Workspace { |