github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/metadata_v2_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_normaliseXmlMetadata(t *testing.T) {
    16  	type args struct {
    17  		key           string
    18  		href          string
    19  		objectName    string
    20  		metadataEntry *types.MetadataValue
    21  	}
    22  	tests := []struct {
    23  		name    string
    24  		args    args
    25  		want    *normalisedMetadata
    26  		wantErr bool
    27  	}{
    28  		{
    29  			name: "string normalised",
    30  			args: args{
    31  				key:        "key",
    32  				objectName: "foo",
    33  				href:       "/admin/catalog/67e119b7-083b-349e-8dfd-6cf0c19b83cf",
    34  				metadataEntry: &types.MetadataValue{
    35  					TypedValue: &types.MetadataTypedValue{
    36  						XsiType: types.MetadataStringValue,
    37  						Value:   "value",
    38  					},
    39  				},
    40  			},
    41  			want: &normalisedMetadata{
    42  				ObjectType: "catalog",
    43  				ObjectName: "foo",
    44  				Key:        "key",
    45  				Value:      "value",
    46  			},
    47  		},
    48  		{
    49  			name: "bool normalised",
    50  			args: args{
    51  				key:        "key",
    52  				objectName: "foo",
    53  				href:       "/admin/catalog/67e119b7-083b-349e-8dfd-6cf0c19b83cf",
    54  				metadataEntry: &types.MetadataValue{
    55  					TypedValue: &types.MetadataTypedValue{
    56  						XsiType: types.MetadataBooleanValue,
    57  						Value:   "true",
    58  					},
    59  				},
    60  			},
    61  			want: &normalisedMetadata{
    62  				ObjectType: "catalog",
    63  				ObjectName: "foo",
    64  				Key:        "key",
    65  				Value:      "true",
    66  			},
    67  		},
    68  		{
    69  			name: "number normalised",
    70  			args: args{
    71  				key:        "key",
    72  				objectName: "foo",
    73  				href:       "/admin/catalog/67e119b7-083b-349e-8dfd-6cf0c19b83cf",
    74  				metadataEntry: &types.MetadataValue{
    75  					TypedValue: &types.MetadataTypedValue{
    76  						XsiType: types.MetadataNumberValue,
    77  						Value:   "314159",
    78  					},
    79  				},
    80  			},
    81  			want: &normalisedMetadata{
    82  				ObjectType: "catalog",
    83  				ObjectName: "foo",
    84  				Key:        "key",
    85  				Value:      "314159",
    86  			},
    87  		},
    88  		{
    89  			name: "date normalised",
    90  			args: args{
    91  				key:        "key",
    92  				objectName: "foo",
    93  				href:       "/admin/catalog/67e119b7-083b-349e-8dfd-6cf0c19b83cf",
    94  				metadataEntry: &types.MetadataValue{
    95  					TypedValue: &types.MetadataTypedValue{
    96  						XsiType: types.MetadataDateTimeValue,
    97  						Value:   "2023-11-16T09:56:00.000Z",
    98  					},
    99  				},
   100  			},
   101  			want: &normalisedMetadata{
   102  				ObjectType: "catalog",
   103  				ObjectName: "foo",
   104  				Key:        "key",
   105  				Value:      "2023-11-16T09:56:00.000Z",
   106  			},
   107  		},
   108  	}
   109  	for _, tt := range tests {
   110  		t.Run(tt.name, func(t *testing.T) {
   111  			got, err := normaliseXmlMetadata(tt.args.key, tt.args.href, tt.args.objectName, tt.args.metadataEntry)
   112  			if (err != nil) != tt.wantErr {
   113  				t.Errorf("normaliseXmlMetadata() error = %v, wantErr %v", err, tt.wantErr)
   114  				return
   115  			}
   116  			if !reflect.DeepEqual(got, tt.want) {
   117  				t.Errorf("normaliseXmlMetadata() got = %v, want %v", got, tt.want)
   118  			}
   119  		})
   120  	}
   121  }