TestGetRunningPrebuiltWorkspaces ensures the correct behavior of the GetRunningPrebuiltWorkspaces query.
(t *testing.T)
| 7999 | // TestGetRunningPrebuiltWorkspaces ensures the correct behavior of the |
| 8000 | // GetRunningPrebuiltWorkspaces query. |
| 8001 | func TestGetRunningPrebuiltWorkspaces(t *testing.T) { |
| 8002 | t.Parallel() |
| 8003 | |
| 8004 | ctx := testutil.Context(t, testutil.WaitLong) |
| 8005 | db, _ := dbtestutil.NewDB(t) |
| 8006 | now := dbtime.Now() |
| 8007 | |
| 8008 | // Given: a prebuilt workspace with a successful start build and a stop build. |
| 8009 | org := dbgen.Organization(t, db, database.Organization{}) |
| 8010 | user := dbgen.User(t, db, database.User{}) |
| 8011 | template := dbgen.Template(t, db, database.Template{ |
| 8012 | CreatedBy: user.ID, |
| 8013 | OrganizationID: org.ID, |
| 8014 | }) |
| 8015 | templateVersion := dbgen.TemplateVersion(t, db, database.TemplateVersion{ |
| 8016 | TemplateID: uuid.NullUUID{UUID: template.ID, Valid: true}, |
| 8017 | OrganizationID: org.ID, |
| 8018 | CreatedBy: user.ID, |
| 8019 | }) |
| 8020 | preset := dbgen.Preset(t, db, database.InsertPresetParams{ |
| 8021 | TemplateVersionID: templateVersion.ID, |
| 8022 | DesiredInstances: sql.NullInt32{Int32: 1, Valid: true}, |
| 8023 | }) |
| 8024 | |
| 8025 | setupFixture := func(t *testing.T, db database.Store, name string, deleted bool, transition database.WorkspaceTransition, jobStatus database.ProvisionerJobStatus) database.WorkspaceTable { |
| 8026 | t.Helper() |
| 8027 | ws := dbgen.Workspace(t, db, database.WorkspaceTable{ |
| 8028 | OwnerID: database.PrebuildsSystemUserID, |
| 8029 | TemplateID: template.ID, |
| 8030 | Name: name, |
| 8031 | Deleted: deleted, |
| 8032 | }) |
| 8033 | var canceledAt sql.NullTime |
| 8034 | var jobError sql.NullString |
| 8035 | switch jobStatus { |
| 8036 | case database.ProvisionerJobStatusFailed: |
| 8037 | jobError = sql.NullString{String: assert.AnError.Error(), Valid: true} |
| 8038 | case database.ProvisionerJobStatusCanceled: |
| 8039 | canceledAt = sql.NullTime{Time: now, Valid: true} |
| 8040 | } |
| 8041 | pj := dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{ |
| 8042 | OrganizationID: org.ID, |
| 8043 | InitiatorID: database.PrebuildsSystemUserID, |
| 8044 | Provisioner: database.ProvisionerTypeEcho, |
| 8045 | Type: database.ProvisionerJobTypeWorkspaceBuild, |
| 8046 | StartedAt: sql.NullTime{Time: now.Add(-time.Minute), Valid: true}, |
| 8047 | CanceledAt: canceledAt, |
| 8048 | CompletedAt: sql.NullTime{Time: now, Valid: true}, |
| 8049 | Error: jobError, |
| 8050 | }) |
| 8051 | wb := dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{ |
| 8052 | WorkspaceID: ws.ID, |
| 8053 | TemplateVersionID: templateVersion.ID, |
| 8054 | TemplateVersionPresetID: uuid.NullUUID{UUID: preset.ID, Valid: true}, |
| 8055 | JobID: pj.ID, |
| 8056 | BuildNumber: 1, |
| 8057 | Transition: transition, |
| 8058 | InitiatorID: database.PrebuildsSystemUserID, |
nothing calls this directly
no test coverage detected