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 }