github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/model/product_test.go (about) 1 package model_test 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/kyma-incubator/compass/components/director/pkg/resource" 8 9 "github.com/kyma-incubator/compass/components/director/internal/model" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestProductInput_ToProduct(t *testing.T) { 14 // GIVEN 15 id := "test" 16 ordID := "foo" 17 appID := "bar" 18 appTemplateVersionID := "vaz" 19 vendor := "Sample" 20 name := "sample" 21 labels := json.RawMessage("{}") 22 23 testCases := []struct { 24 Name string 25 Input *model.ProductInput 26 ResourceType resource.Type 27 ResourceID string 28 Expected *model.Product 29 }{ 30 { 31 Name: "All properties given for App", 32 Input: &model.ProductInput{ 33 OrdID: ordID, 34 Title: name, 35 Vendor: vendor, 36 Labels: labels, 37 }, 38 Expected: &model.Product{ 39 ID: id, 40 OrdID: ordID, 41 ApplicationID: &appID, 42 Title: name, 43 Vendor: vendor, 44 Labels: labels, 45 }, 46 ResourceType: resource.Application, 47 ResourceID: appID, 48 }, 49 { 50 Name: "All properties given for App Template Version", 51 Input: &model.ProductInput{ 52 OrdID: ordID, 53 Title: name, 54 Vendor: vendor, 55 Labels: labels, 56 }, 57 Expected: &model.Product{ 58 ID: id, 59 OrdID: ordID, 60 ApplicationTemplateVersionID: &appTemplateVersionID, 61 Title: name, 62 Vendor: vendor, 63 Labels: labels, 64 }, 65 ResourceType: resource.ApplicationTemplateVersion, 66 ResourceID: appTemplateVersionID, 67 }, 68 { 69 Name: "Nil", 70 Input: nil, 71 Expected: nil, 72 }, 73 } 74 75 for _, testCase := range testCases { 76 t.Run(testCase.Name, func(t *testing.T) { 77 // WHEN 78 result := testCase.Input.ToProduct(id, testCase.ResourceType, testCase.ResourceID) 79 80 // then 81 assert.Equal(t, testCase.Expected, result) 82 }) 83 } 84 }