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

     1  package model_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/kyma-incubator/compass/components/director/internal/model"
     8  	"github.com/pkg/errors"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestBundleReferenceInput_ToBundleReference(t *testing.T) {
    13  	// GIVEN
    14  	bundleRefID := "foo"
    15  	bundleID := "bundle-id"
    16  	refID := "ref-id"
    17  	apiDefaultTargetURL := "http://test.com"
    18  	testCases := []struct {
    19  		Name                     string
    20  		InputReferenceObjectType model.BundleReferenceObjectType
    21  		InputReferenceObjectID   *string
    22  		BundleReferenceInput     *model.BundleReferenceInput
    23  		Expected                 *model.BundleReference
    24  		ExpectedErr              error
    25  	}{
    26  		{
    27  			Name:                     "All properties given for APIBundleReference",
    28  			InputReferenceObjectID:   &refID,
    29  			InputReferenceObjectType: model.BundleAPIReference,
    30  			BundleReferenceInput: &model.BundleReferenceInput{
    31  				APIDefaultTargetURL: &apiDefaultTargetURL,
    32  			},
    33  			Expected: &model.BundleReference{
    34  				ID:                  bundleRefID,
    35  				BundleID:            &bundleID,
    36  				ObjectType:          model.BundleAPIReference,
    37  				ObjectID:            &refID,
    38  				APIDefaultTargetURL: &apiDefaultTargetURL,
    39  			},
    40  		},
    41  		{
    42  			Name:                     "Default targetURL for API is missing",
    43  			InputReferenceObjectID:   &refID,
    44  			InputReferenceObjectType: model.BundleAPIReference,
    45  			BundleReferenceInput: &model.BundleReferenceInput{
    46  				APIDefaultTargetURL: nil,
    47  			},
    48  			Expected:    nil,
    49  			ExpectedErr: errors.New("default targetURL for API cannot be empty"),
    50  		},
    51  		{
    52  			Name:                     "All properties given for EventBundleReference",
    53  			InputReferenceObjectID:   &refID,
    54  			InputReferenceObjectType: model.BundleEventReference,
    55  			BundleReferenceInput: &model.BundleReferenceInput{
    56  				APIDefaultTargetURL: nil,
    57  			},
    58  			Expected: &model.BundleReference{
    59  				ID:                  bundleRefID,
    60  				BundleID:            &bundleID,
    61  				ObjectType:          model.BundleEventReference,
    62  				ObjectID:            &refID,
    63  				APIDefaultTargetURL: nil,
    64  			},
    65  		},
    66  		{
    67  			Name:                 "Nil",
    68  			BundleReferenceInput: nil,
    69  			Expected:             nil,
    70  		},
    71  	}
    72  
    73  	for i, testCase := range testCases {
    74  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
    75  			// WHEN
    76  			result, err := testCase.BundleReferenceInput.ToBundleReference(bundleRefID, testCase.InputReferenceObjectType, &bundleID, testCase.InputReferenceObjectID)
    77  
    78  			// THEN
    79  			if testCase.ExpectedErr != nil {
    80  				assert.Error(t, err)
    81  				assert.EqualError(t, err, testCase.ExpectedErr.Error())
    82  			} else {
    83  				assert.NoError(t, err)
    84  			}
    85  
    86  			assert.Equal(t, testCase.Expected, result)
    87  		})
    88  	}
    89  }