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 }