@@ -10,6 +10,7 @@ import (
1010	helmv2 "github.com/fluxcd/helm-controller/api/v2" 
1111	sourcev1 "github.com/fluxcd/source-controller/api/v1" 
1212	"github.com/go-logr/logr" 
13+ 	"github.com/google/go-cmp/cmp" 
1314	"github.com/stretchr/testify/assert" 
1415	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 
1516	"k8s.io/apimachinery/pkg/util/sets" 
@@ -60,7 +61,13 @@ func TestNewFluxReconciler(t *testing.T) {
6061	for  _ , tt  :=  range  tests  {
6162		t .Run (tt .name , func (t  * testing.T ) {
6263			actual  :=  NewFluxReconciler (tt .logger , tt .localClient , tt .remoteClient , "" )
63- 			if  ! assert .Equal (t , actual , tt .expected ) {
64+ 			diff  :=  cmp .Diff (actual , tt .expected , cmp .Comparer (func (a , b  FluxReconciler ) bool  {
65+ 				return  actual .localClient  ==  tt .localClient  && 
66+ 					actual .remoteClient  ==  tt .remoteClient  && 
67+ 					actual .logger  ==  tt .logger  && 
68+ 					actual .knownTypes .Equal (tt .expected .knownTypes )
69+ 			}))
70+ 			if  ! assert .Empty (t , diff ) {
6471				t .Errorf ("NewReconciler() = %v, want %v" , actual , tt .expected )
6572			}
6673		})
@@ -630,6 +637,7 @@ func TestFluxReconciler_Install(t *testing.T) {
630637		name          string 
631638		obj           juggler.Component 
632639		validateFunc  func (ctx  context.Context , c  client.Client , component  juggler.Component ) error 
640+ 		labelFunc     juggler.LabelFunc 
633641		expected      error 
634642	}{
635643		{
@@ -728,11 +736,72 @@ func TestFluxReconciler_Install(t *testing.T) {
728736			},
729737			expected : nil ,
730738		},
739+ 		{
740+ 			name : "FluxReconciler with custom label func - creation successful" ,
741+ 			labelFunc : func (juggler.Component ) map [string ]string  {
742+ 				return  map [string ]string {
743+ 					testLabelComponentName :         "custom-name" ,
744+ 					"app.kubernetes.io/managed-by" : "service-provider-crossplane" ,
745+ 					"custom-label" :                 "custom-value" ,
746+ 				}
747+ 			},
748+ 			obj : FakeFluxComponent {
749+ 				BuildSourceRepositoryFunc : func (ctx  context.Context ) (SourceAdapter , error ) {
750+ 					return  & HelmRepositoryAdapter {
751+ 						Source : & sourcev1.HelmRepository {
752+ 							ObjectMeta : metav1.ObjectMeta {
753+ 								Name :      "test" ,
754+ 								Namespace : "default" ,
755+ 							},
756+ 							Spec : sourcev1.HelmRepositorySpec {
757+ 								URL : "test-url" ,
758+ 							},
759+ 						},
760+ 					}, nil 
761+ 				},
762+ 				BuildManifestoFunc : func (ctx  context.Context ) (Manifesto , error ) {
763+ 					return  & HelmReleaseManifesto {
764+ 						Manifest : & helmv2.HelmRelease {
765+ 							ObjectMeta : metav1.ObjectMeta {
766+ 								Name :      "test" ,
767+ 								Namespace : "default" ,
768+ 							},
769+ 							Spec : helmv2.HelmReleaseSpec {ReleaseName : "test-name" },
770+ 						},
771+ 					}, nil 
772+ 				},
773+ 				GetNameFunc : "FakeFluxComponent" ,
774+ 			},
775+ 			validateFunc : func (ctx  context.Context , c  client.Client , component  juggler.Component ) error  {
776+ 				expectedLabels  :=  map [string ]string {
777+ 					"app.kubernetes.io/managed-by" : "service-provider-crossplane" ,
778+ 					testLabelComponentName :         "custom-name" ,
779+ 					"custom-label" :                 "custom-value" ,
780+ 				}
781+ 				helmRepository  :=  & sourcev1.HelmRepository {}
782+ 				if  err  :=  c .Get (ctx , client.ObjectKey {Name : "test" , Namespace : "default" }, helmRepository ); err  !=  nil  {
783+ 					return  err 
784+ 				}
785+ 				if  ! assert .Equal (t , helmRepository .GetLabels (), expectedLabels ) {
786+ 					return  errors .New ("labels not equal" )
787+ 				}
788+ 				helmRelease  :=  & helmv2.HelmRelease {}
789+ 				if  err  :=  c .Get (ctx , client.ObjectKey {Name : "test" , Namespace : "default" }, helmRelease ); err  !=  nil  {
790+ 					return  err 
791+ 				}
792+ 				if  ! assert .Equal (t , helmRelease .GetLabels (), expectedLabels ) {
793+ 					return  errors .New ("labels not equal" )
794+ 				}
795+ 				return  nil 
796+ 			},
797+ 			expected : nil ,
798+ 		},
731799	}
732800	for  _ , tt  :=  range  tests  {
733801		t .Run (tt .name , func (t  * testing.T ) {
734802			fakeLocalClient  :=  fake .NewClientBuilder ().WithScheme (scheme ).Build ()
735- 			r  :=  NewFluxReconciler (logr.Logger {}, fakeLocalClient , nil , testLabelComponentName )
803+ 			r  :=  NewFluxReconciler (logr.Logger {}, fakeLocalClient , nil , testLabelComponentName ).
804+ 				WithLabelFunc (tt .labelFunc )
736805			ctx  :=  context .TODO ()
737806			actual  :=  r .Install (ctx , tt .obj )
738807
0 commit comments