(t *testing.T)
| 5467 | } |
| 5468 | |
| 5469 | func TestWorkspaceListTasks(t *testing.T) { |
| 5470 | t.Parallel() |
| 5471 | |
| 5472 | ctx := testutil.Context(t, testutil.WaitShort) |
| 5473 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 5474 | user := coderdtest.CreateFirstUser(t, client) |
| 5475 | |
| 5476 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 5477 | Parse: echo.ParseComplete, |
| 5478 | ProvisionApply: echo.ApplyComplete, |
| 5479 | ProvisionGraph: []*proto.Response{ |
| 5480 | {Type: &proto.Response_Graph{Graph: &proto.GraphComplete{ |
| 5481 | HasAiTasks: true, |
| 5482 | }}}, |
| 5483 | }, |
| 5484 | }) |
| 5485 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 5486 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 5487 | |
| 5488 | // Given: a regular user workspace |
| 5489 | workspaceWithoutTask, err := client.CreateUserWorkspace(ctx, codersdk.Me, codersdk.CreateWorkspaceRequest{ |
| 5490 | TemplateID: template.ID, |
| 5491 | Name: "user-workspace", |
| 5492 | }) |
| 5493 | require.NoError(t, err) |
| 5494 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceWithoutTask.LatestBuild.ID) |
| 5495 | |
| 5496 | // Given: a workspace associated with a task |
| 5497 | task, err := client.CreateTask(ctx, codersdk.Me, codersdk.CreateTaskRequest{ |
| 5498 | TemplateVersionID: template.ActiveVersionID, |
| 5499 | Input: "Some task prompt", |
| 5500 | }) |
| 5501 | require.NoError(t, err) |
| 5502 | assert.True(t, task.WorkspaceID.Valid) |
| 5503 | workspaceWithTask, err := client.Workspace(ctx, task.WorkspaceID.UUID) |
| 5504 | require.NoError(t, err) |
| 5505 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceWithTask.LatestBuild.ID) |
| 5506 | assert.NotEmpty(t, task.Name) |
| 5507 | assert.Equal(t, template.ID, task.TemplateID) |
| 5508 | |
| 5509 | // When: listing the workspaces |
| 5510 | workspaces, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{}) |
| 5511 | require.NoError(t, err) |
| 5512 | |
| 5513 | assert.Equal(t, workspaces.Count, 2) |
| 5514 | |
| 5515 | // Then: verify TaskID is only set for task workspaces |
| 5516 | for _, workspace := range workspaces.Workspaces { |
| 5517 | if workspace.ID == workspaceWithoutTask.ID { |
| 5518 | assert.False(t, workspace.TaskID.Valid) |
| 5519 | } else if workspace.ID == workspaceWithTask.ID { |
| 5520 | assert.True(t, workspace.TaskID.Valid) |
| 5521 | assert.Equal(t, task.ID, workspace.TaskID.UUID) |
| 5522 | } |
| 5523 | } |
| 5524 | } |
| 5525 | |
| 5526 | func TestWorkspaceAppUpsertRestart(t *testing.T) { |
nothing calls this directly
no test coverage detected