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

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