@@ -34,49 +34,51 @@ func TestUpdate(t *testing.T) {
34
34
t .Run ("OK" ,func (t * testing.T ) {
35
35
t .Parallel ()
36
36
37
+ // Given: a workspace exists on the latest template version.
37
38
client := coderdtest .New (t ,& coderdtest.Options {IncludeProvisionerDaemon :true })
38
39
owner := coderdtest .CreateFirstUser (t ,client )
39
- member ,memberUser := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID )
40
+ member ,_ := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID )
40
41
version1 := coderdtest .CreateTemplateVersion (t ,client ,owner .OrganizationID ,nil )
41
42
42
43
coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version1 .ID )
43
44
template := coderdtest .CreateTemplate (t ,client ,owner .OrganizationID ,version1 .ID )
44
45
45
- inv ,root := clitest .New (t ,"create" ,
46
- "my-workspace" ,
47
- "--template" ,template .Name ,
48
- "-y" ,
49
- )
50
- clitest .SetupConfig (t ,member ,root )
51
-
52
- err := inv .Run ()
53
- require .NoError (t ,err )
54
-
55
- ws ,err := client .WorkspaceByOwnerAndName (context .Background (),memberUser .Username ,"my-workspace" , codersdk.WorkspaceOptions {})
56
- require .NoError (t ,err )
57
- require .Equal (t ,version1 .ID .String (),ws .LatestBuild .TemplateVersionID .String ())
46
+ ws := coderdtest .CreateWorkspace (t ,member ,template .ID ,func (cwr * codersdk.CreateWorkspaceRequest ) {
47
+ cwr .Name = "my-workspace"
48
+ })
49
+ require .False (t ,ws .Outdated ,"newly created workspace with active template version must not be outdated" )
58
50
51
+ // Given: the template version is updated
59
52
version2 := coderdtest .UpdateTemplateVersion (t ,client ,owner .OrganizationID ,& echo.Responses {
60
53
Parse :echo .ParseComplete ,
61
54
ProvisionApply :echo .ApplyComplete ,
62
55
ProvisionPlan :echo .PlanComplete ,
63
56
},template .ID )
64
57
_ = coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version2 .ID )
65
58
66
- err = client .UpdateActiveTemplateVersion (context .Background (),template .ID , codersdk.UpdateActiveTemplateVersion {
59
+ ctx := testutil .Context (t ,testutil .WaitShort )
60
+ err := client .UpdateActiveTemplateVersion (ctx ,template .ID , codersdk.UpdateActiveTemplateVersion {
67
61
ID :version2 .ID ,
68
62
})
69
- require .NoError (t ,err )
63
+ require .NoError (t ,err , "failed to update active template version" )
70
64
71
- inv ,root = clitest .New (t ,"update" ,ws .Name )
65
+ // Then: the workspace is marked as 'outdated'
66
+ ws ,err = member .WorkspaceByOwnerAndName (ctx ,codersdk .Me ,"my-workspace" , codersdk.WorkspaceOptions {})
67
+ require .NoError (t ,err ,"member failed to get workspace they themselves own" )
68
+ require .True (t ,ws .Outdated ,"workspace must be outdated after template version update" )
69
+
70
+ // When: the workspace is updated
71
+ inv ,root := clitest .New (t ,"update" ,ws .Name )
72
72
clitest .SetupConfig (t ,member ,root )
73
73
74
74
err = inv .Run ()
75
- require .NoError (t ,err )
75
+ require .NoError (t ,err , "update command failed" )
76
76
77
- ws ,err = member .WorkspaceByOwnerAndName (context .Background (),memberUser .Username ,"my-workspace" , codersdk.WorkspaceOptions {})
78
- require .NoError (t ,err )
79
- require .Equal (t ,version2 .ID .String (),ws .LatestBuild .TemplateVersionID .String ())
77
+ // Then: the workspace is no longer 'outdated'
78
+ ws ,err = member .WorkspaceByOwnerAndName (ctx ,codersdk .Me ,"my-workspace" , codersdk.WorkspaceOptions {})
79
+ require .NoError (t ,err ,"member failed to get workspace they themselves own after update" )
80
+ require .Equal (t ,version2 .ID .String (),ws .LatestBuild .TemplateVersionID .String (),"workspace must have latest template version after update" )
81
+ require .False (t ,ws .Outdated ,"workspace must not be outdated after update" )
80
82
})
81
83
}
82
84