@@ -20,6 +20,7 @@ import (
2020 "reflect"
2121 "testing"
2222
23+ "github.com/stretchr/testify/assert"
2324 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2425
2526 workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
@@ -713,3 +714,69 @@ func TestRecordManagedLabels(t *testing.T) {
713714 })
714715 }
715716}
717+
718+ func TestDedupeAndMergeFinalizers (t * testing.T ) {
719+ type args struct {
720+ existFinalizers []string
721+ newFinalizers []string
722+ }
723+ tests := []struct {
724+ name string
725+ args args
726+ want []string
727+ }{
728+ {
729+ name : "existFinalizers is nil" ,
730+ args : args {
731+ existFinalizers : nil ,
732+ newFinalizers : []string {"karmada.io/binding-controller" },
733+ },
734+ want : []string {"karmada.io/binding-controller" },
735+ },
736+ {
737+ name : "newFinalizers is nil" ,
738+ args : args {
739+ existFinalizers : []string {"karmada.io/binding-controller" },
740+ newFinalizers : nil ,
741+ },
742+ want : []string {"karmada.io/binding-controller" },
743+ },
744+ {
745+ name : "binding-controller in front of binding-dependencies-distributor" ,
746+ args : args {
747+ existFinalizers : []string {"karmada.io/binding-controller" , "karmada.io/binding-dependencies-distributor" },
748+ newFinalizers : []string {"karmada.io/binding-controller" },
749+ },
750+ want : []string {"karmada.io/binding-controller" , "karmada.io/binding-dependencies-distributor" },
751+ },
752+ {
753+ name : "binding-dependencies-distributor in front of binding-controller" ,
754+ args : args {
755+ existFinalizers : []string {"karmada.io/binding-dependencies-distributor" , "karmada.io/binding-controller" },
756+ newFinalizers : []string {"karmada.io/binding-controller" },
757+ },
758+ want : []string {"karmada.io/binding-dependencies-distributor" , "karmada.io/binding-controller" },
759+ },
760+ {
761+ name : "new finalizers have all Finalizers" ,
762+ args : args {
763+ existFinalizers : []string {"karmada.io/binding-dependencies-distributor" , "karmada.io/binding-controller" },
764+ newFinalizers : []string {"karmada.io/binding-controller" , "karmada.io/binding-dependencies-distributor" },
765+ },
766+ want : []string {"karmada.io/binding-dependencies-distributor" , "karmada.io/binding-controller" },
767+ },
768+ {
769+ name : "existFinalizers have only one item" ,
770+ args : args {
771+ existFinalizers : []string {"karmada.io/binding-dependencies-distributor" },
772+ newFinalizers : []string {"karmada.io/binding-controller" , "karmada.io/binding-dependencies-distributor" },
773+ },
774+ want : []string {"karmada.io/binding-dependencies-distributor" , "karmada.io/binding-controller" },
775+ },
776+ }
777+ for _ , tt := range tests {
778+ t .Run (tt .name , func (t * testing.T ) {
779+ assert .Equalf (t , tt .want , DedupeAndMergeFinalizers (tt .args .existFinalizers , tt .args .newFinalizers ), "DedupeAndMergeFinalizers(%v, %v)" , tt .args .existFinalizers , tt .args .newFinalizers )
780+ })
781+ }
782+ }
0 commit comments