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  }