(t *testing.T)
| 6129 | } |
| 6130 | |
| 6131 | func TestWorkspaceCreateWithImplicitPreset(t *testing.T) { |
| 6132 | t.Parallel() |
| 6133 | |
| 6134 | // Helper function to create template with presets |
| 6135 | createTemplateWithPresets := func(t *testing.T, client *codersdk.Client, user codersdk.CreateFirstUserResponse, presets []*proto.Preset) (codersdk.Template, codersdk.TemplateVersion) { |
| 6136 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 6137 | Parse: echo.ParseComplete, |
| 6138 | ProvisionGraph: []*proto.Response{ |
| 6139 | { |
| 6140 | Type: &proto.Response_Graph{ |
| 6141 | Graph: &proto.GraphComplete{ |
| 6142 | Presets: presets, |
| 6143 | }, |
| 6144 | }, |
| 6145 | }, |
| 6146 | }, |
| 6147 | }) |
| 6148 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 6149 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 6150 | return template, version |
| 6151 | } |
| 6152 | |
| 6153 | // Helper function to create workspace and verify preset usage |
| 6154 | createWorkspaceAndVerifyPreset := func(t *testing.T, client *codersdk.Client, template codersdk.Template, expectedPresetID *uuid.UUID, params []codersdk.WorkspaceBuildParameter) codersdk.Workspace { |
| 6155 | wsName := testutil.GetRandomNameHyphenated(t) |
| 6156 | var ws codersdk.Workspace |
| 6157 | if len(params) > 0 { |
| 6158 | ws = coderdtest.CreateWorkspace(t, client, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) { |
| 6159 | cwr.Name = wsName |
| 6160 | cwr.RichParameterValues = params |
| 6161 | }) |
| 6162 | } else { |
| 6163 | ws = coderdtest.CreateWorkspace(t, client, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) { |
| 6164 | cwr.Name = wsName |
| 6165 | }) |
| 6166 | } |
| 6167 | require.Equal(t, wsName, ws.Name) |
| 6168 | |
| 6169 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID) |
| 6170 | |
| 6171 | // Verify the preset was used if expected |
| 6172 | if expectedPresetID != nil { |
| 6173 | require.NotNil(t, ws.LatestBuild.TemplateVersionPresetID) |
| 6174 | require.Equal(t, *expectedPresetID, *ws.LatestBuild.TemplateVersionPresetID) |
| 6175 | } else { |
| 6176 | require.Nil(t, ws.LatestBuild.TemplateVersionPresetID) |
| 6177 | } |
| 6178 | |
| 6179 | return ws |
| 6180 | } |
| 6181 | |
| 6182 | t.Run("NoPresets", func(t *testing.T) { |
| 6183 | t.Parallel() |
| 6184 | |
| 6185 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 6186 | user := coderdtest.CreateFirstUser(t, client) |
| 6187 | |
| 6188 | // Create template with no presets |
nothing calls this directly
no test coverage detected