@@ -54,6 +54,11 @@ func TestCreateTable(t *testing.T) {
54
54
}
55
55
}
56
56
57
+ type mdforAddGet struct {
58
+ Metadata string `json:"odata.metadata"`
59
+ Type string `json:"odata.type"` // only for full metadata
60
+ }
61
+
57
62
func TestAddEntity (t * testing.T ) {
58
63
for _ , service := range services {
59
64
t .Run (fmt .Sprintf ("%v_%v" , t .Name (), service ), func (t * testing.T ) {
@@ -66,8 +71,13 @@ func TestAddEntity(t *testing.T) {
66
71
67
72
marshalledEntity , err := json .Marshal (simpleEntity )
68
73
require .NoError (t , err )
69
- _ , err = client .AddEntity (ctx , marshalledEntity , nil )
74
+ resp , err : = client .AddEntity (ctx , marshalledEntity , nil )
70
75
require .NoError (t , err )
76
+ require .NotEmpty (t , resp .Value )
77
+ var md mdforAddGet
78
+ require .NoError (t , json .Unmarshal (resp .Value , & md ))
79
+ require .NotEmpty (t , md .Metadata )
80
+ require .Empty (t , md .Type )
71
81
})
72
82
}
73
83
}
@@ -83,8 +93,18 @@ func TestAddComplexEntity(t *testing.T) {
83
93
marshalledEntity , err := json .Marshal (entity )
84
94
require .NoError (t , err )
85
95
86
- _ , err = client .AddEntity (ctx , marshalledEntity , nil )
96
+ resp , err := client .AddEntity (ctx , marshalledEntity , & AddEntityOptions {
97
+ Format : to .Ptr (MetadataFormatFull ),
98
+ })
87
99
require .NoError (t , err )
100
+ require .NotEmpty (t , resp .Value )
101
+ var md mdforAddGet
102
+ require .NoError (t , json .Unmarshal (resp .Value , & md ))
103
+ require .NotEmpty (t , md .Metadata )
104
+ if service == "storage" {
105
+ // cosmos doesn't send full metadata
106
+ require .NotEmpty (t , md .Type )
107
+ }
88
108
})
89
109
}
90
110
}
@@ -165,6 +185,11 @@ func TestMergeEntity(t *testing.T) {
165
185
166
186
preMerge , err := client .GetEntity (ctx , entityToCreate .PartitionKey , entityToCreate .RowKey , nil )
167
187
require .NoError (t , err )
188
+ require .NotEmpty (t , preMerge .Value )
189
+ var md mdforAddGet
190
+ require .NoError (t , json .Unmarshal (preMerge .Value , & md ))
191
+ require .NotEmpty (t , md .Metadata )
192
+ require .Empty (t , md .Type )
168
193
169
194
var unMarshalledPreMerge map [string ]any
170
195
err = json .Unmarshal (preMerge .Value , & unMarshalledPreMerge )
@@ -245,8 +270,18 @@ func TestInsertEntity(t *testing.T) {
245
270
list := & ListEntitiesOptions {Filter : & filter }
246
271
247
272
// 2. Query for basic Entity
248
- preMerge , err := client .GetEntity (ctx , entityToCreate .PartitionKey , entityToCreate .RowKey , nil )
273
+ preMerge , err := client .GetEntity (ctx , entityToCreate .PartitionKey , entityToCreate .RowKey , & GetEntityOptions {
274
+ Format : to .Ptr (MetadataFormatFull ),
275
+ })
249
276
require .NoError (t , err )
277
+ require .NotEmpty (t , preMerge .Value )
278
+ var md mdforAddGet
279
+ require .NoError (t , json .Unmarshal (preMerge .Value , & md ))
280
+ require .NotEmpty (t , md .Metadata )
281
+ if service == "storage" {
282
+ // cosmos doesn't send full metadata
283
+ require .NotEmpty (t , md .Type )
284
+ }
250
285
251
286
var unMarshalledPreMerge map [string ]any
252
287
err = json .Unmarshal (preMerge .Value , & unMarshalledPreMerge )
@@ -304,6 +339,11 @@ func TestInsertEntityTwice(t *testing.T) {
304
339
}
305
340
}
306
341
342
+ type mdForListEntities struct {
343
+ Timestamp time.Time `json:"Timestamp"`
344
+ ID string `json:"odata.id"` // only for full metadata
345
+ }
346
+
307
347
func TestQuerySimpleEntity (t * testing.T ) {
308
348
for _ , service := range services {
309
349
t .Run (fmt .Sprintf ("%v_%v" , t .Name (), service ), func (t * testing.T ) {
@@ -328,7 +368,8 @@ func TestQuerySimpleEntity(t *testing.T) {
328
368
var resp ListEntitiesResponse
329
369
pager := client .NewListEntitiesPager (list )
330
370
for pager .More () {
331
- resp , err := pager .NextPage (ctx )
371
+ var err error
372
+ resp , err = pager .NextPage (ctx )
332
373
require .NoError (t , err )
333
374
require .Equal (t , len (resp .Entities ), expectedCount )
334
375
}
@@ -353,6 +394,11 @@ func TestQuerySimpleEntity(t *testing.T) {
353
394
require .Equal (t , b .String , (* entitiesToCreate )[i ].String )
354
395
require .Equal (t , b .Integer , (* entitiesToCreate )[i ].Integer )
355
396
require .Equal (t , b .Bool , (* entitiesToCreate )[i ].Bool )
397
+
398
+ var md mdForListEntities
399
+ require .NoError (t , json .Unmarshal (e , & md ))
400
+ require .False (t , md .Timestamp .IsZero ())
401
+ require .Empty (t , md .ID )
356
402
}
357
403
})
358
404
}
@@ -375,7 +421,10 @@ func TestQueryComplexEntity(t *testing.T) {
375
421
376
422
filter := "RowKey lt '5'"
377
423
expectedCount := 4
378
- options := & ListEntitiesOptions {Filter : & filter }
424
+ options := & ListEntitiesOptions {
425
+ Filter : & filter ,
426
+ Format : to .Ptr (MetadataFormatFull ),
427
+ }
379
428
380
429
pager := client .NewListEntitiesPager (options )
381
430
for pager .More () {
@@ -396,6 +445,14 @@ func TestQueryComplexEntity(t *testing.T) {
396
445
require .Equal (t , model .Float , (entitiesToCreate )[idx ].Float )
397
446
require .Equal (t , model .DateTime , (entitiesToCreate )[idx ].DateTime )
398
447
require .Equal (t , model .Byte , (entitiesToCreate )[idx ].Byte )
448
+
449
+ var md mdForListEntities
450
+ require .NoError (t , json .Unmarshal (entity , & md ))
451
+ require .False (t , md .Timestamp .IsZero ())
452
+ if service == "storage" {
453
+ // cosmos doesn't send full metadata
454
+ require .NotEmpty (t , md .ID )
455
+ }
399
456
}
400
457
}
401
458
})
0 commit comments