From c342558fb61e125b8b8de0cfaeb6baa28d5c30eb Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Wed, 12 May 2021 14:43:36 +0200 Subject: [PATCH] add unit test for StringSliceReplaceElement --- pkg/util/users/users.go | 4 ++-- pkg/util/util.go | 9 ++++----- pkg/util/util_test.go | 8 ++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/pkg/util/users/users.go b/pkg/util/users/users.go index e81ddd119..7fa94d464 100644 --- a/pkg/util/users/users.go +++ b/pkg/util/users/users.go @@ -83,9 +83,9 @@ func (strategy DefaultUserSyncStrategy) ProduceSyncRequests(dbUsers spec.PgUserM userFlags := make([]string, len(dbUser.Flags)) userFlags = append(userFlags, dbUser.Flags...) if dbUser.Deprecated { - util.StringSliceReplaceElement(&dbUser.Flags, constants.RoleFlagNoLogin, constants.RoleFlagLogin) + dbUser.Flags = util.StringSliceReplaceElement(dbUser.Flags, constants.RoleFlagNoLogin, constants.RoleFlagLogin) } else { - util.StringSliceReplaceElement(&dbUser.Flags, constants.RoleFlagLogin, constants.RoleFlagNoLogin) + dbUser.Flags = util.StringSliceReplaceElement(dbUser.Flags, constants.RoleFlagLogin, constants.RoleFlagNoLogin) } if !util.IsEqualIgnoreOrder(userFlags, dbUser.Flags) { reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGsyncUserAlter, User: dbUser}) diff --git a/pkg/util/util.go b/pkg/util/util.go index 18ee717d0..a52925583 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -152,16 +152,15 @@ func IsEqualIgnoreOrder(a, b []string) bool { } // SliceReplaceElement -func StringSliceReplaceElement(s *[]string, a, b string) *[]string { - tmp := *s - for _, str := range tmp { +func StringSliceReplaceElement(s []string, a, b string) (result []string) { + tmp := make([]string, 0, len(s)) + for _, str := range s { if str == a { str = b } tmp = append(tmp, str) } - *s = tmp - return s + return tmp } // SubstractStringSlices finds elements in a that are not in b and return them as a result slice. diff --git a/pkg/util/util_test.go b/pkg/util/util_test.go index c02d2c075..75853c3d6 100644 --- a/pkg/util/util_test.go +++ b/pkg/util/util_test.go @@ -166,6 +166,14 @@ func TestIsEqualIgnoreOrder(t *testing.T) { } } +func TestStringSliceReplaceElement(t *testing.T) { + testSlice := []string{"a", "b", "c"} + testSlice = StringSliceReplaceElement(testSlice, "b", "d") + if !SliceContains(testSlice, "d") { + t.Errorf("testSlide item not replaced: %v", testSlice) + } +} + func TestSubstractSlices(t *testing.T) { for _, tt := range substractTest { actualRes, actualEqual := SubstractStringSlices(tt.inA, tt.inB)