github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/graphql/query_params_test.go (about)

     1  package graphql
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestQueryParams_UnmarshalGQL(t *testing.T) {
    12  	for name, tc := range map[string]struct {
    13  		input    interface{}
    14  		err      bool
    15  		errmsg   string
    16  		expected QueryParams
    17  	}{
    18  		//given
    19  		"correct input": {
    20  			input:    map[string][]string{"param1": {"val1", "val2"}},
    21  			err:      false,
    22  			expected: QueryParams{"param1": []string{"val1", "val2"}},
    23  		},
    24  		"error: input is nil": {
    25  			input:  nil,
    26  			err:    true,
    27  			errmsg: "Invalid data [reason=input should not be nil]",
    28  		},
    29  		"error: invalid input": {
    30  			input:  "invalid params",
    31  			err:    true,
    32  			errmsg: "unexpected input type: string, should be map[string][]string",
    33  		},
    34  	} {
    35  		t.Run(name, func(t *testing.T) {
    36  			// WHEN
    37  			params := QueryParams{}
    38  			err := params.UnmarshalGQL(tc.input)
    39  
    40  			// THEN
    41  			if tc.err {
    42  				assert.Error(t, err)
    43  				assert.EqualError(t, err, tc.errmsg)
    44  				assert.Empty(t, params)
    45  			} else {
    46  				assert.NoError(t, err)
    47  				assert.Equal(t, tc.expected, params)
    48  			}
    49  		})
    50  	}
    51  }
    52  
    53  func TestQueryParams_MarshalGQL(t *testing.T) {
    54  	//given
    55  	fixParams := QueryParams{
    56  		"param": []string{"val1", "val2"},
    57  	}
    58  	expectedParams := `{"param":["val1","val2"]}`
    59  	buf := bytes.Buffer{}
    60  
    61  	// WHEN
    62  	fixParams.MarshalGQL(&buf)
    63  
    64  	// THEN
    65  	assert.NotNil(t, buf)
    66  	assert.Equal(t, expectedParams, buf.String())
    67  }
    68  
    69  func Test_NewQueryParamsSerialized(t *testing.T) {
    70  	t.Run("Success when invoking NewQueryParamsSerialized", func(t *testing.T) {
    71  		// GIVEN
    72  		expected := QueryParamsSerialized("{\"param1\":[\"val1\",\"val2\"]}")
    73  		given := map[string][]string{"param1": []string{"val1", "val2"}}
    74  
    75  		// WHEN
    76  		marshaled, err := NewQueryParamsSerialized(given)
    77  
    78  		// THEN
    79  		require.NoError(t, err)
    80  		require.Equal(t, expected, marshaled)
    81  	})
    82  }
    83  
    84  func Test_QueryParamsSerializedUnmarshal(t *testing.T) {
    85  	t.Run("Success when unmarshaling serialized QueryParams", func(t *testing.T) {
    86  		// GIVEN
    87  		expected := map[string][]string{"param1": []string{"val1", "val2"}}
    88  		marshaled := QueryParamsSerialized("{\"param1\":[\"val1\",\"val2\"]}")
    89  
    90  		// WHEN
    91  		params, err := marshaled.Unmarshal()
    92  
    93  		// THEN
    94  		require.NoError(t, err)
    95  		require.Equal(t, expected, params)
    96  	})
    97  }