@@ -12,6 +12,7 @@ import (
1212 "github.com/operator-framework/operator-marketplace/pkg/operatorsource"
1313 log "github.com/sirupsen/logrus"
1414 "github.com/stretchr/testify/assert"
15+ "k8s.io/apimachinery/pkg/types"
1516 "sigs.k8s.io/controller-runtime/pkg/client"
1617)
1718
@@ -22,7 +23,10 @@ func TestHandle_PhaseHasChanged_UpdateExpected(t *testing.T) {
2223 controller := gomock .NewController (t )
2324 defer controller .Finish ()
2425
25- kubeclient := mocks .NewKubeClient (controller )
26+ // Making two OperatorSource objects that are not equal to simulate a change.
27+ opsrcIn , opsrcOut := helperNewOperatorSourceWithEndpoint ("marketplace" , "foo" , "remote" ), helperNewOperatorSourceWithEndpoint ("marketplace" , "foo" , "local" )
28+
29+ fakeclient := NewFakeClientWithOpsrc (opsrcIn )
2630 writer := mocks .NewDatastoreWriter (controller )
2731 factory := mocks .NewMockPhaseReconcilerFactory (controller )
2832 transitioner := mocks .NewPhaseTransitioner (controller )
@@ -32,13 +36,10 @@ func TestHandle_PhaseHasChanged_UpdateExpected(t *testing.T) {
3236 return cacheReconciler
3337 }
3438
35- handler := operatorsource .NewHandlerWithParams (kubeclient , writer , factory , transitioner , newCacheReconcilerFunc )
39+ handler := operatorsource .NewHandlerWithParams (fakeclient , writer , factory , transitioner , newCacheReconcilerFunc )
3640
3741 ctx := context .TODO ()
3842
39- // Making two OperatorSource objects that are not equal to simulate a change.
40- opsrcIn , opsrcOut := helperNewOperatorSourceWithEndpoint ("marketplace" , "foo" , "remote" ), helperNewOperatorSourceWithEndpoint ("marketplace" , "foo" , "local" )
41-
4243 phaseReconciler := mocks .NewPhaseReconciler (controller )
4344 factory .EXPECT ().GetPhaseReconciler (gomock .Any (), opsrcIn ).Return (phaseReconciler , nil ).Times (1 )
4445
@@ -55,12 +56,16 @@ func TestHandle_PhaseHasChanged_UpdateExpected(t *testing.T) {
5556 // We expect the transitioner to indicate that the object has changed and needs update.
5657 transitioner .EXPECT ().TransitionInto (& opsrcOut .Status .CurrentPhase , nextPhaseExpected ).Return (true ).Times (1 )
5758
58- // We expect the object to be updated successfully.
59- kubeclient .EXPECT ().Update (ctx , opsrcOut ).Return (nil ).Times (1 )
60-
6159 errGot := handler .Handle (ctx , opsrcIn )
6260
6361 assert .NoError (t , errGot )
62+
63+ // We expect the object to be updated successfully.
64+ namespacedName := types.NamespacedName {Name : "foo" , Namespace : "marketplace" }
65+ opsrcGot := & marketplace.OperatorSource {}
66+
67+ fakeclient .Get (ctx , namespacedName , opsrcGot )
68+ assert .Equal (t , opsrcOut , opsrcGot )
6469}
6570
6671// Use Case: sdk passes an event with a valid object and reconciliation is
@@ -70,7 +75,11 @@ func TestHandle_PhaseHasNotChanged_NoUpdateExpected(t *testing.T) {
7075 controller := gomock .NewController (t )
7176 defer controller .Finish ()
7277
73- kubeclient := mocks .NewKubeClient (controller )
78+ // Making two OperatorSource objects that are not equal to simulate a change.
79+ opsrcIn , opsrcOut := helperNewOperatorSourceWithEndpoint ("namespace" , "foo" , "local" ), helperNewOperatorSourceWithEndpoint ("namespace" , "foo" , "remote" )
80+
81+ fakeclient := NewFakeClientWithOpsrc (opsrcIn )
82+
7483 writer := mocks .NewDatastoreWriter (controller )
7584 factory := mocks .NewMockPhaseReconcilerFactory (controller )
7685 transitioner := mocks .NewPhaseTransitioner (controller )
@@ -80,13 +89,10 @@ func TestHandle_PhaseHasNotChanged_NoUpdateExpected(t *testing.T) {
8089 return cacheReconciler
8190 }
8291
83- handler := operatorsource .NewHandlerWithParams (kubeclient , writer , factory , transitioner , newCacheReconcilerFunc )
92+ handler := operatorsource .NewHandlerWithParams (fakeclient , writer , factory , transitioner , newCacheReconcilerFunc )
8493
8594 ctx := context .TODO ()
8695
87- // Making two OperatorSource objects that are not equal to simulate a change.
88- opsrcIn , opsrcOut := helperNewOperatorSourceWithEndpoint ("namespace" , "foo" , "local" ), helperNewOperatorSourceWithEndpoint ("namespace" , "foo" , "remote" )
89-
9096 phaseReconciler := mocks .NewPhaseReconciler (controller )
9197 factory .EXPECT ().GetPhaseReconciler (gomock .Any (), opsrcIn ).Return (phaseReconciler , nil ).Times (1 )
9298
@@ -102,6 +108,13 @@ func TestHandle_PhaseHasNotChanged_NoUpdateExpected(t *testing.T) {
102108 errGot := handler .Handle (ctx , opsrcIn )
103109
104110 assert .NoError (t , errGot )
111+
112+ // We expect no changes to the object
113+ namespacedName := types.NamespacedName {Name : "foo" , Namespace : "namespace" }
114+ opsrcGot := & marketplace.OperatorSource {}
115+
116+ fakeclient .Get (ctx , namespacedName , opsrcGot )
117+ assert .Equal (t , opsrcIn , opsrcGot )
105118}
106119
107120// Use Case: sdk passes an event with a valid object, reconciliation is not
@@ -111,7 +124,7 @@ func TestHandle_UpdateError_ReconciliationErrorReturned(t *testing.T) {
111124 controller := gomock .NewController (t )
112125 defer controller .Finish ()
113126
114- kubeclient := mocks . NewKubeClient ( controller )
127+ fakeclient := NewFakeClient ( )
115128 writer := mocks .NewDatastoreWriter (controller )
116129 factory := mocks .NewMockPhaseReconcilerFactory (controller )
117130 transitioner := mocks .NewPhaseTransitioner (controller )
@@ -121,7 +134,7 @@ func TestHandle_UpdateError_ReconciliationErrorReturned(t *testing.T) {
121134 return cacheReconciler
122135 }
123136
124- handler := operatorsource .NewHandlerWithParams (kubeclient , writer , factory , transitioner , newCacheReconcilerFunc )
137+ handler := operatorsource .NewHandlerWithParams (fakeclient , writer , factory , transitioner , newCacheReconcilerFunc )
125138
126139 ctx := context .TODO ()
127140
@@ -144,12 +157,11 @@ func TestHandle_UpdateError_ReconciliationErrorReturned(t *testing.T) {
144157 // We expect transitioner to indicate that the object has been changed.
145158 transitioner .EXPECT ().TransitionInto (& opsrcOut .Status .CurrentPhase , nextPhaseExpected ).Return (true ).Times (1 )
146159
147- // We expect the object to be updated
148- updateErrorExpected := errors .New ("object update error" )
149- kubeclient .EXPECT ().Update (ctx , opsrcOut ).Return (updateErrorExpected ).Times (1 )
150-
151160 errGot := handler .Handle (ctx , opsrcIn )
152161
153162 assert .Error (t , errGot )
154163 assert .Equal (t , reconcileErrorExpected , errGot )
164+
165+ // We expect the object to be updated
166+ assert .Error (t , fakeclient .Update (ctx , opsrcOut ))
155167}
0 commit comments