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  }