@@ -612,7 +612,7 @@ func TestGetWorkspaceAgentUsageStatsAndLabels(t *testing.T) {
612612})
613613}
614614
615- func TestGetWorkspaceAndAgents (t * testing.T ) {
615+ func TestGetWorkspacesAndAgents (t * testing.T ) {
616616t .Parallel ()
617617if testing .Short () {
618618t .SkipNow ()
@@ -641,9 +641,12 @@ func TestGetWorkspaceAndAgents(t *testing.T) {
641641CreateAgent :true ,
642642})
643643succeeded := createTemplateVersion (t ,db ,tpl ,tvArgs {
644- Status :database .ProvisionerJobStatusSucceeded ,
645- CreateWorkspace :true ,
646- CreateAgent :true ,
644+ Status :database .ProvisionerJobStatusSucceeded ,
645+ WorkspaceTransition :database .WorkspaceTransitionStart ,
646+ CreateWorkspace :true ,
647+ CreateAgent :true ,
648+ ExtraAgents :1 ,
649+ ExtraBuilds :2 ,
647650})
648651deleted := createTemplateVersion (t ,db ,tpl ,tvArgs {
649652Status :database .ProvisionerJobStatusSucceeded ,
@@ -666,8 +669,9 @@ func TestGetWorkspaceAndAgents(t *testing.T) {
666669require .Len (t ,row .AgentIds ,1 )
667670require .Equal (t ,database .ProvisionerJobStatusFailed ,row .JobStatus )
668671case succeeded .ID :
669- require .Len (t ,row .AgentIds ,1 )
672+ require .Len (t ,row .AgentIds ,2 )
670673require .Equal (t ,database .ProvisionerJobStatusSucceeded ,row .JobStatus )
674+ require .Equal (t ,database .WorkspaceTransitionStart ,row .Transition )
671675case deleted .ID :
672676require .Len (t ,row .AgentIds ,0 )
673677require .Equal (t ,database .ProvisionerJobStatusSucceeded ,row .JobStatus )
@@ -1603,6 +1607,8 @@ type tvArgs struct {
16031607CreateWorkspace bool
16041608CreateAgent bool
16051609WorkspaceTransition database.WorkspaceTransition
1610+ ExtraAgents int
1611+ ExtraBuilds int
16061612}
16071613
16081614// createTemplateVersion is a helper function to create a version with its dependencies.
@@ -1673,26 +1679,51 @@ func createTemplateVersion(t testing.TB, db database.Store, tpl database.Templat
16731679trans = args .WorkspaceTransition
16741680}
16751681
1676- buildJob := dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
1682+ latestJob := dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
16771683Type :database .ProvisionerJobTypeWorkspaceBuild ,
16781684CompletedAt :now ,
16791685InitiatorID :tpl .CreatedBy ,
16801686OrganizationID :tpl .OrganizationID ,
16811687})
1682- resource := dbgen .WorkspaceResource (t ,db , database.WorkspaceResource {
1683- JobID :buildJob .ID ,
1688+ latestResource := dbgen .WorkspaceResource (t ,db , database.WorkspaceResource {
1689+ JobID :latestJob .ID ,
16841690})
16851691dbgen .WorkspaceBuild (t ,db , database.WorkspaceBuild {
16861692WorkspaceID :wrk .ID ,
16871693TemplateVersionID :version .ID ,
16881694BuildNumber :1 ,
16891695Transition :trans ,
16901696InitiatorID :tpl .CreatedBy ,
1691- JobID :buildJob .ID ,
1692- })
1697+ JobID :latestJob .ID ,
1698+ })
1699+ for i := 0 ;i < args .ExtraBuilds ;i ++ {
1700+ latestJob = dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
1701+ Type :database .ProvisionerJobTypeWorkspaceBuild ,
1702+ CompletedAt :now ,
1703+ InitiatorID :tpl .CreatedBy ,
1704+ OrganizationID :tpl .OrganizationID ,
1705+ })
1706+ latestResource = dbgen .WorkspaceResource (t ,db , database.WorkspaceResource {
1707+ JobID :latestJob .ID ,
1708+ })
1709+ dbgen .WorkspaceBuild (t ,db , database.WorkspaceBuild {
1710+ WorkspaceID :wrk .ID ,
1711+ TemplateVersionID :version .ID ,
1712+ BuildNumber :int32 (i )+ 2 ,
1713+ Transition :trans ,
1714+ InitiatorID :tpl .CreatedBy ,
1715+ JobID :latestJob .ID ,
1716+ })
1717+ }
1718+
16931719if args .CreateAgent {
16941720dbgen .WorkspaceAgent (t ,db , database.WorkspaceAgent {
1695- ResourceID :resource .ID ,
1721+ ResourceID :latestResource .ID ,
1722+ })
1723+ }
1724+ for i := 0 ;i < args .ExtraAgents ;i ++ {
1725+ dbgen .WorkspaceAgent (t ,db , database.WorkspaceAgent {
1726+ ResourceID :latestResource .ID ,
16961727})
16971728}
16981729}