github.com/operator-framework/operator-lifecycle-manager@v0.30.0/test/e2e/util/gomega/subscription_matchers.go (about)

     1  package gomega
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/onsi/gomega/matchers"
     7  	"github.com/onsi/gomega/types"
     8  	"github.com/operator-framework/api/pkg/operators/v1alpha1"
     9  	"github.com/operator-framework/operator-lifecycle-manager/test/e2e/util"
    10  )
    11  
    12  func HaveSubscriptionState(state v1alpha1.SubscriptionState) types.GomegaMatcher {
    13  	return &SubscriptionStateMatcher{
    14  		EqualMatcher: &matchers.EqualMatcher{
    15  			Expected: state,
    16  		},
    17  	}
    18  }
    19  
    20  type SubscriptionStateMatcher struct {
    21  	*matchers.EqualMatcher
    22  }
    23  
    24  func (s *SubscriptionStateMatcher) FailureMessage(actual interface{}) (message string) {
    25  	return fmt.Sprintf("expected subscription status.subscriptionState to be '%s':\n%s\n", s.Expected, util.ObjectToJsonString(actual))
    26  }
    27  
    28  func (s *SubscriptionStateMatcher) NegatedFailureMessage(actual interface{}) (message string) {
    29  	return fmt.Sprintf("expected subscription status.subscriptionState to NOT be '%s'\n%s\n", s.Expected, util.ObjectToJsonString(actual))
    30  }
    31  
    32  func (s *SubscriptionStateMatcher) Match(actual interface{}) (bool, error) {
    33  	switch actual := actual.(type) {
    34  	case *v1alpha1.Subscription:
    35  		util.Logf("expecting subscription state '%s' to be '%s'", actual.Status.State, s.Expected)
    36  		return s.EqualMatcher.Match(actual.Status.State)
    37  	default:
    38  		return false, fmt.Errorf("actual %v is not a subscription", actual)
    39  	}
    40  }
    41  
    42  type ContainSubscriptionConditionOfTypeMatcher struct {
    43  	*matchers.ContainElementMatcher
    44  }
    45  
    46  func ContainSubscriptionConditionOfType(conditionType v1alpha1.SubscriptionConditionType) types.GomegaMatcher {
    47  	return &ContainSubscriptionConditionOfTypeMatcher{
    48  		ContainElementMatcher: &matchers.ContainElementMatcher{
    49  			Element: conditionType,
    50  		},
    51  	}
    52  }
    53  
    54  func (s *ContainSubscriptionConditionOfTypeMatcher) Match(actual interface{}) (bool, error) {
    55  	switch actual := actual.(type) {
    56  	case *v1alpha1.Subscription:
    57  		var conditionTypes []v1alpha1.SubscriptionConditionType
    58  		for _, condition := range actual.Status.Conditions {
    59  			conditionTypes = append(conditionTypes, condition.Type)
    60  		}
    61  		util.Logf("expecting subscription condition type '%s' to be in %s", s.Element, conditionTypes)
    62  		return s.ContainElementMatcher.Match(conditionTypes)
    63  	default:
    64  		return false, fmt.Errorf("actual %v is not a subscription", actual)
    65  	}
    66  }