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  }