@@ -544,6 +544,40 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
544544 require .NotContains (t , "olm.operatorframework.io/teardown" , rev .Finalizers )
545545 },
546546 },
547+ {
548+ name : "set Available condition to Unknown with reason Archived when archiving revision" ,
549+ revisionResult : mockRevisionResult {},
550+ existingObjs : func () []client.Object {
551+ ext := newTestClusterExtension ()
552+ rev1 := newTestClusterExtensionRevision (clusterExtensionRevisionName )
553+ rev1 .Finalizers = []string {
554+ "olm.operatorframework.io/teardown" ,
555+ }
556+ rev1 .Spec .LifecycleState = ocv1 .ClusterExtensionRevisionLifecycleStateArchived
557+ require .NoError (t , controllerutil .SetControllerReference (ext , rev1 , testScheme ))
558+ return []client.Object {rev1 , ext }
559+ },
560+ revisionEngineTeardownFn : func (t * testing.T ) func (ctx context.Context , rev machinerytypes.Revision , opts ... machinerytypes.RevisionTeardownOption ) (machinery.RevisionTeardownResult , error ) {
561+ return func (ctx context.Context , rev machinerytypes.Revision , opts ... machinerytypes.RevisionTeardownOption ) (machinery.RevisionTeardownResult , error ) {
562+ return & mockRevisionTeardownResult {
563+ isComplete : true ,
564+ }, nil
565+ }
566+ },
567+ validate : func (t * testing.T , c client.Client ) {
568+ rev := & ocv1.ClusterExtensionRevision {}
569+ err := c .Get (t .Context (), client.ObjectKey {
570+ Name : clusterExtensionRevisionName ,
571+ }, rev )
572+ require .NoError (t , err )
573+ cond := meta .FindStatusCondition (rev .Status .Conditions , ocv1 .ClusterExtensionRevisionTypeAvailable )
574+ require .NotNil (t , cond )
575+ require .Equal (t , metav1 .ConditionUnknown , cond .Status )
576+ require .Equal (t , ocv1 .ClusterExtensionRevisionReasonArchived , cond .Reason )
577+ require .Equal (t , "revision is archived" , cond .Message )
578+ require .Equal (t , int64 (1 ), cond .ObservedGeneration )
579+ },
580+ },
547581 {
548582 name : "revision is torn down when in archived state and finalizer is removed" ,
549583 revisionResult : mockRevisionResult {},
@@ -554,6 +588,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
554588 "olm.operatorframework.io/teardown" ,
555589 }
556590 rev1 .Spec .LifecycleState = ocv1 .ClusterExtensionRevisionLifecycleStateArchived
591+ meta .SetStatusCondition (& rev1 .Status .Conditions , metav1.Condition {
592+ Type : ocv1 .ClusterExtensionRevisionTypeAvailable ,
593+ Status : metav1 .ConditionUnknown ,
594+ Reason : ocv1 .ClusterExtensionRevisionReasonArchived ,
595+ Message : "revision is archived" ,
596+ ObservedGeneration : rev1 .Generation ,
597+ })
557598 require .NoError (t , controllerutil .SetControllerReference (ext , rev1 , testScheme ))
558599 return []client.Object {rev1 , ext }
559600 },
@@ -570,7 +611,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
570611 Name : clusterExtensionRevisionName ,
571612 }, rev )
572613 require .NoError (t , err )
573- require .NotContains (t , "olm.operatorframework.io/teardown" , rev . Finalizers )
614+ require .NotContains (t , rev . Finalizers , "olm.operatorframework.io/teardown" )
574615 },
575616 },
576617 {
0 commit comments