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