github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/merchant/productgroups/FindParams_test.go (about) 1 package productgroups 2 3 import ( 4 "runtime" 5 "testing" 6 7 "github.com/Ingenico-ePayments/connect-sdk-go/communicator" 8 ) 9 10 func TestFindParamsToRequestParameters(t *testing.T) { 11 lParams := &FindParams{} 12 13 paramList := communicator.RequestParams{} 14 15 paramRequestCmp(t, lParams, paramList) 16 17 { 18 lParams.CountryCode = new(string) 19 *lParams.CountryCode = "NL" 20 21 param, _ := communicator.NewRequestParam("countryCode", "NL") 22 paramList = append(paramList, *param) 23 } 24 paramRequestCmp(t, lParams, paramList) 25 26 { 27 lParams.CurrencyCode = new(string) 28 *lParams.CurrencyCode = "EUR" 29 30 param, _ := communicator.NewRequestParam("currencyCode", "EUR") 31 paramList = append(paramList, *param) 32 } 33 paramRequestCmp(t, lParams, paramList) 34 35 { 36 lParams.Locale = new(string) 37 *lParams.Locale = "nl_NL" 38 39 param, _ := communicator.NewRequestParam("locale", "nl_NL") 40 paramList = append(paramList, *param) 41 } 42 paramRequestCmp(t, lParams, paramList) 43 44 { 45 amount := new(int64) 46 *amount = 1000 47 lParams.Amount = amount 48 49 param, _ := communicator.NewRequestParam("amount", "1000") 50 paramList = append(paramList, *param) 51 } 52 paramRequestCmp(t, lParams, paramList) 53 54 { 55 isRecurring := new(bool) 56 *isRecurring = true 57 lParams.IsRecurring = isRecurring 58 59 param, _ := communicator.NewRequestParam("isRecurring", "true") 60 paramList = append(paramList, *param) 61 } 62 paramRequestCmp(t, lParams, paramList) 63 64 { 65 lParams.AddHide("fields") 66 67 param, _ := communicator.NewRequestParam("hide", "fields") 68 paramList = append(paramList, *param) 69 } 70 paramRequestCmp(t, lParams, paramList) 71 72 { 73 lParams.AddHide("accountsOnFile") 74 75 param, _ := communicator.NewRequestParam("hide", "accountsOnFile") 76 paramList = append(paramList, *param) 77 } 78 paramRequestCmp(t, lParams, paramList) 79 80 { 81 lParams.Amount = nil 82 83 paramList = append(paramList[0:3], paramList[4:]...) 84 } 85 paramRequestCmp(t, lParams, paramList) 86 } 87 88 func paramRequestCmp(t *testing.T, a communicator.ParamRequest, b communicator.RequestParams) { 89 params := a.ToRequestParameters() 90 91 if requestParamsCmp(params, b) == false { 92 buf := make([]byte, 1<<16) 93 runtime.Stack(buf, true) 94 t.Fatal("paramRequestCmp failed on equality", params, b, string(buf)) 95 } 96 } 97 98 func requestParamsCmp(a, b communicator.RequestParams) bool { 99 if a == nil && b == nil { 100 return true 101 } 102 103 if a == nil { 104 return false 105 } 106 107 if b == nil { 108 return false 109 } 110 111 if len(a) != len(b) { 112 return false 113 } 114 115 for i := range a { 116 if a[i] != b[i] { 117 return false 118 } 119 } 120 121 return true 122 }