@@ -167,4 +167,46 @@ func TestStart(t *testing.T) {
167
167
})
168
168
}
169
169
})
170
+
171
+ t .Run ("StartActivatesDormant" ,func (t * testing.T ) {
172
+ t .Parallel ()
173
+
174
+ ctx := testutil .Context (t ,testutil .WaitMedium )
175
+ ownerClient ,owner := coderdenttest .New (t ,& coderdenttest.Options {
176
+ Options :& coderdtest.Options {
177
+ IncludeProvisionerDaemon :true ,
178
+ },
179
+ LicenseOptions :& coderdenttest.LicenseOptions {
180
+ Features : license.Features {
181
+ codersdk .FeatureAdvancedTemplateScheduling :1 ,
182
+ },
183
+ },
184
+ })
185
+
186
+ version := coderdtest .CreateTemplateVersion (t ,ownerClient ,owner .OrganizationID ,nil )
187
+ _ = coderdtest .AwaitTemplateVersionJobCompleted (t ,ownerClient ,version .ID )
188
+ template := coderdtest .CreateTemplate (t ,ownerClient ,owner .OrganizationID ,version .ID )
189
+
190
+ memberClient ,_ := coderdtest .CreateAnotherUser (t ,ownerClient ,owner .OrganizationID )
191
+ workspace := coderdtest .CreateWorkspace (t ,memberClient ,owner .OrganizationID ,template .ID )
192
+ _ = coderdtest .AwaitWorkspaceBuildJobCompleted (t ,memberClient ,workspace .LatestBuild .ID )
193
+ _ = coderdtest .MustTransitionWorkspace (t ,memberClient ,workspace .ID ,database .WorkspaceTransitionStart ,database .WorkspaceTransitionStop )
194
+ err := memberClient .UpdateWorkspaceDormancy (ctx ,workspace .ID , codersdk.UpdateWorkspaceDormancy {
195
+ Dormant :true ,
196
+ })
197
+ require .NoError (t ,err )
198
+
199
+ inv ,root := newCLI (t ,"start" ,workspace .Name )
200
+ clitest .SetupConfig (t ,memberClient ,root )
201
+
202
+ var buf bytes.Buffer
203
+ inv .Stdout = & buf
204
+
205
+ err = inv .Run ()
206
+ require .NoError (t ,err )
207
+ require .Contains (t ,buf .String (),"Activating dormant workspace..." )
208
+
209
+ workspace = coderdtest .MustWorkspace (t ,memberClient ,workspace .ID )
210
+ require .Equal (t ,codersdk .WorkspaceTransitionStart ,workspace .LatestBuild .Transition )
211
+ })
170
212
}