@@ -11,6 +11,7 @@ import (
11
11
"github.com/stretchr/testify/require"
12
12
13
13
"github.com/coder/coder/coderd/coderdtest"
14
+ "github.com/coder/coder/coderd/rbac"
14
15
"github.com/coder/coder/coderd/util/ptr"
15
16
"github.com/coder/coder/codersdk"
16
17
)
@@ -27,6 +28,37 @@ func TestTemplate(t *testing.T) {
27
28
_ , err := client .Template (context .Background (), template .ID )
28
29
require .NoError (t , err )
29
30
})
31
+
32
+ t .Run ("WorkspaceCount" , func (t * testing.T ) {
33
+ t .Parallel ()
34
+ ctx := context .Background ()
35
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
36
+ user := coderdtest .CreateFirstUser (t , client )
37
+ member := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleAdmin ())
38
+ memberWithDeleted := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleAdmin ())
39
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
40
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
41
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
42
+
43
+ // Create 3 workspaces with 3 users. 2 workspaces exist, 1 is deleted
44
+ workspace := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
45
+ coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
46
+
47
+ memberWorkspace := coderdtest .CreateWorkspace (t , member , user .OrganizationID , template .ID )
48
+ coderdtest .AwaitWorkspaceBuildJob (t , member , memberWorkspace .LatestBuild .ID )
49
+
50
+ deletedWorkspace := coderdtest .CreateWorkspace (t , memberWithDeleted , user .OrganizationID , template .ID )
51
+ coderdtest .AwaitWorkspaceBuildJob (t , client , deletedWorkspace .LatestBuild .ID )
52
+ build , err := client .CreateWorkspaceBuild (ctx , deletedWorkspace .ID , codersdk.CreateWorkspaceBuildRequest {
53
+ Transition : codersdk .WorkspaceTransitionDelete ,
54
+ })
55
+ require .NoError (t , err )
56
+ coderdtest .AwaitWorkspaceBuildJob (t , client , build .ID )
57
+
58
+ template , err = client .Template (context .Background (), template .ID )
59
+ require .NoError (t , err )
60
+ require .Equal (t , 2 , int (template .WorkspaceOwnerCount ), "workspace count" )
61
+ })
30
62
}
31
63
32
64
func TestPostTemplateByOrganization (t * testing.T ) {
0 commit comments