github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/model/fetchrequest_test.go (about)

     1  package model_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/kyma-incubator/compass/components/director/internal/model"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestFetchRequestInput_ToFetchRequest(t *testing.T) {
    13  	// GIVEN
    14  	mode := model.FetchModeSingle
    15  	filter := "foofilter"
    16  	timestamp := time.Now()
    17  	testCases := []struct {
    18  		Name                     string
    19  		InputID                  string
    20  		InputReferenceObjectType model.FetchRequestReferenceObjectType
    21  		InputReferenceObjectID   string
    22  		InputFRInput             *model.FetchRequestInput
    23  		Expected                 *model.FetchRequest
    24  	}{
    25  		{
    26  			Name:                     "All properties given",
    27  			InputID:                  "input-id",
    28  			InputReferenceObjectID:   "ref-id",
    29  			InputReferenceObjectType: model.APISpecFetchRequestReference,
    30  			InputFRInput: &model.FetchRequestInput{
    31  				URL: "foourl",
    32  				Auth: &model.AuthInput{
    33  					AdditionalHeaders: map[string][]string{
    34  						"foo": {"foo", "bar"},
    35  						"bar": {"bar", "foo"},
    36  					},
    37  				},
    38  				Mode:   &mode,
    39  				Filter: &filter,
    40  			},
    41  			Expected: &model.FetchRequest{
    42  				ID:         "input-id",
    43  				ObjectID:   "ref-id",
    44  				ObjectType: model.APISpecFetchRequestReference,
    45  				URL:        "foourl",
    46  				Auth: &model.Auth{
    47  					AdditionalHeaders: map[string][]string{
    48  						"foo": {"foo", "bar"},
    49  						"bar": {"bar", "foo"},
    50  					},
    51  				},
    52  				Mode:   mode,
    53  				Filter: &filter,
    54  				Status: &model.FetchRequestStatus{
    55  					Condition: model.FetchRequestStatusConditionInitial,
    56  					Timestamp: timestamp,
    57  				},
    58  			},
    59  		},
    60  		{
    61  			Name:                     "Empty",
    62  			InputID:                  "input-id",
    63  			InputReferenceObjectType: model.APISpecFetchRequestReference,
    64  			InputReferenceObjectID:   "ref-id-2",
    65  			InputFRInput:             &model.FetchRequestInput{},
    66  			Expected: &model.FetchRequest{
    67  				ID:         "input-id",
    68  				ObjectID:   "ref-id-2",
    69  				ObjectType: model.APISpecFetchRequestReference,
    70  				Mode:       model.FetchModeSingle,
    71  				Status: &model.FetchRequestStatus{
    72  					Condition: model.FetchRequestStatusConditionInitial,
    73  					Timestamp: timestamp,
    74  				},
    75  			},
    76  		},
    77  		{
    78  			Name:         "Nil",
    79  			InputFRInput: nil,
    80  			Expected:     nil,
    81  		},
    82  	}
    83  
    84  	for i, testCase := range testCases {
    85  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
    86  			// WHEN
    87  			result := testCase.InputFRInput.ToFetchRequest(timestamp, testCase.InputID, testCase.InputReferenceObjectType, testCase.InputReferenceObjectID)
    88  
    89  			// THEN
    90  			assert.Equal(t, testCase.Expected, result)
    91  		})
    92  	}
    93  }