@@ -824,14 +824,24 @@ func TestHardLimitedPresetShouldNotBlockDeletion(t *testing.T) {
824
824
825
825
// Test cases verify the behavior of prebuild creation depending on configured failure limits.
826
826
testCases := []struct {
827
- name string
828
- hardLimit int64
829
- isHardLimitHit bool
827
+ name string
828
+ hardLimit int64
829
+ createNewTemplateVersion bool
830
+ deleteTemplate bool
830
831
}{
831
832
{
832
- name :"hard limit is hit - skip creation of prebuilt workspace" ,
833
- hardLimit :1 ,
834
- isHardLimitHit :true ,
833
+ // hard limit is hit - but we allow deletion of prebuilt workspace because it's outdated (new template version was created)
834
+ name :"new template version is created" ,
835
+ hardLimit :1 ,
836
+ createNewTemplateVersion :true ,
837
+ deleteTemplate :false ,
838
+ },
839
+ {
840
+ // hard limit is hit - but we allow deletion of prebuilt workspace because template is deleted
841
+ name :"template is deleted" ,
842
+ hardLimit :1 ,
843
+ createNewTemplateVersion :false ,
844
+ deleteTemplate :true ,
835
845
},
836
846
}
837
847
@@ -988,12 +998,19 @@ func TestHardLimitedPresetShouldNotBlockDeletion(t *testing.T) {
988
998
require .NotNil (t ,metric .GetGauge ())
989
999
require .EqualValues (t ,1 ,metric .GetGauge ().GetValue ())
990
1000
991
- // When: the template is deleted.
992
- require .NoError (t ,db .UpdateTemplateDeletedByID (ctx , database.UpdateTemplateDeletedByIDParams {
993
- ID :template .ID ,
994
- Deleted :true ,
995
- UpdatedAt :dbtime .Now (),
996
- }))
1001
+ if tc .createNewTemplateVersion {
1002
+ // Create a new template version and mark it as active
1003
+ // This marks the template version that we care about as inactive
1004
+ setupTestDBTemplateVersion (ctx ,t ,clock ,db ,pubSub ,org .ID ,ownerID ,template .ID )
1005
+ }
1006
+
1007
+ if tc .deleteTemplate {
1008
+ require .NoError (t ,db .UpdateTemplateDeletedByID (ctx , database.UpdateTemplateDeletedByIDParams {
1009
+ ID :template .ID ,
1010
+ Deleted :true ,
1011
+ UpdatedAt :dbtime .Now (),
1012
+ }))
1013
+ }
997
1014
998
1015
// Trigger reconciliation to make sure that successful, but outdated prebuilt workspace will be deleted.
999
1016
require .NoError (t ,controller .ReconcileAll (ctx ))