(t *testing.T)
| 4590 | } |
| 4591 | |
| 4592 | func TestArchiveVersions(t *testing.T) { |
| 4593 | t.Parallel() |
| 4594 | if testing.Short() { |
| 4595 | t.SkipNow() |
| 4596 | } |
| 4597 | |
| 4598 | t.Run("ArchiveFailedVersions", func(t *testing.T) { |
| 4599 | t.Parallel() |
| 4600 | sqlDB := testSQLDB(t) |
| 4601 | err := migrations.Up(sqlDB) |
| 4602 | require.NoError(t, err) |
| 4603 | db := database.New(sqlDB) |
| 4604 | ctx := context.Background() |
| 4605 | |
| 4606 | org := dbgen.Organization(t, db, database.Organization{}) |
| 4607 | user := dbgen.User(t, db, database.User{}) |
| 4608 | tpl := dbgen.Template(t, db, database.Template{ |
| 4609 | OrganizationID: org.ID, |
| 4610 | CreatedBy: user.ID, |
| 4611 | }) |
| 4612 | // Create some versions |
| 4613 | failed := createTemplateVersion(t, db, tpl, tvArgs{ |
| 4614 | Status: database.ProvisionerJobStatusFailed, |
| 4615 | CreateWorkspace: false, |
| 4616 | }) |
| 4617 | unused := createTemplateVersion(t, db, tpl, tvArgs{ |
| 4618 | Status: database.ProvisionerJobStatusSucceeded, |
| 4619 | CreateWorkspace: false, |
| 4620 | }) |
| 4621 | createTemplateVersion(t, db, tpl, tvArgs{ |
| 4622 | Status: database.ProvisionerJobStatusSucceeded, |
| 4623 | CreateWorkspace: true, |
| 4624 | }) |
| 4625 | deleted := createTemplateVersion(t, db, tpl, tvArgs{ |
| 4626 | Status: database.ProvisionerJobStatusSucceeded, |
| 4627 | CreateWorkspace: true, |
| 4628 | WorkspaceTransition: database.WorkspaceTransitionDelete, |
| 4629 | }) |
| 4630 | |
| 4631 | // Now archive failed versions |
| 4632 | archived, err := db.ArchiveUnusedTemplateVersions(ctx, database.ArchiveUnusedTemplateVersionsParams{ |
| 4633 | UpdatedAt: dbtime.Now(), |
| 4634 | TemplateID: tpl.ID, |
| 4635 | // All versions |
| 4636 | TemplateVersionID: uuid.Nil, |
| 4637 | JobStatus: database.NullProvisionerJobStatus{ |
| 4638 | ProvisionerJobStatus: database.ProvisionerJobStatusFailed, |
| 4639 | Valid: true, |
| 4640 | }, |
| 4641 | }) |
| 4642 | require.NoError(t, err, "archive failed versions") |
| 4643 | require.Len(t, archived, 1, "should only archive one version") |
| 4644 | require.Equal(t, failed.ID, archived[0], "should archive failed version") |
| 4645 | |
| 4646 | // Archive all unused versions |
| 4647 | archived, err = db.ArchiveUnusedTemplateVersions(ctx, database.ArchiveUnusedTemplateVersionsParams{ |
| 4648 | UpdatedAt: dbtime.Now(), |
| 4649 | TemplateID: tpl.ID, |
nothing calls this directly
no test coverage detected