github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/metadata_openapi_unit_test.go (about)

     1  //go:build unit || ALL
     2  
     3  /*
     4  * Copyright 2023 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     5   */
     6  
     7  package govcd
     8  
     9  import (
    10  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    11  	"reflect"
    12  	"testing"
    13  )
    14  
    15  func Test_normaliseOpenApiMetadata(t *testing.T) {
    16  	type args struct {
    17  		objectType    string
    18  		name          string
    19  		metadataEntry *types.OpenApiMetadataEntry
    20  	}
    21  	tests := []struct {
    22  		name    string
    23  		args    args
    24  		want    *normalisedMetadata
    25  		wantErr bool
    26  	}{
    27  		{
    28  			name: "number normalised",
    29  			args: args{
    30  				objectType: "entity",
    31  				name:       "foo",
    32  				metadataEntry: &types.OpenApiMetadataEntry{
    33  					KeyValue: types.OpenApiMetadataKeyValue{
    34  						Domain: "TENANT",
    35  						Key:    "key",
    36  						Value: types.OpenApiMetadataTypedValue{
    37  							Value: 314159,
    38  							Type:  types.OpenApiMetadataNumberEntry,
    39  						},
    40  					},
    41  				},
    42  			},
    43  			want: &normalisedMetadata{
    44  				ObjectType: "entity",
    45  				ObjectName: "foo",
    46  				Key:        "key",
    47  				Value:      "314159",
    48  			},
    49  		},
    50  		{
    51  			name: "string normalised",
    52  			args: args{
    53  				objectType: "entity",
    54  				name:       "foo",
    55  				metadataEntry: &types.OpenApiMetadataEntry{
    56  					KeyValue: types.OpenApiMetadataKeyValue{
    57  						Domain: "TENANT",
    58  						Key:    "key",
    59  						Value: types.OpenApiMetadataTypedValue{
    60  							Value: "value",
    61  							Type:  types.OpenApiMetadataStringEntry,
    62  						},
    63  					},
    64  				},
    65  			},
    66  			want: &normalisedMetadata{
    67  				ObjectType: "entity",
    68  				ObjectName: "foo",
    69  				Key:        "key",
    70  				Value:      "value",
    71  			},
    72  		},
    73  		{
    74  			name: "bool normalised",
    75  			args: args{
    76  				objectType: "entity",
    77  				name:       "foo",
    78  				metadataEntry: &types.OpenApiMetadataEntry{
    79  					KeyValue: types.OpenApiMetadataKeyValue{
    80  						Domain: "TENANT",
    81  						Key:    "key",
    82  						Value: types.OpenApiMetadataTypedValue{
    83  							Value: true,
    84  							Type:  types.OpenApiMetadataBooleanEntry,
    85  						},
    86  					},
    87  				},
    88  			},
    89  			want: &normalisedMetadata{
    90  				ObjectType: "entity",
    91  				ObjectName: "foo",
    92  				Key:        "key",
    93  				Value:      "true",
    94  			},
    95  		},
    96  	}
    97  	for _, tt := range tests {
    98  		t.Run(tt.name, func(t *testing.T) {
    99  			got, err := normaliseOpenApiMetadata(tt.args.objectType, tt.args.name, tt.args.metadataEntry)
   100  			if (err != nil) != tt.wantErr {
   101  				t.Errorf("normaliseOpenApiMetadata() error = %v, wantErr %v", err, tt.wantErr)
   102  				return
   103  			}
   104  			if !reflect.DeepEqual(got, tt.want) {
   105  				t.Errorf("normaliseOpenApiMetadata() got = %v, want %v", got, tt.want)
   106  			}
   107  		})
   108  	}
   109  }