@@ -263,6 +263,8 @@ pub trait ResourceDetector {
263
263
264
264
#[ cfg( test) ]
265
265
mod tests {
266
+ use rstest:: rstest;
267
+
266
268
use super :: * ;
267
269
268
270
#[ test]
@@ -308,47 +310,55 @@ mod tests {
308
310
assert_eq ! ( resource_a. merge( & resource_b) , expected_resource) ;
309
311
}
310
312
311
- #[ test]
312
- fn merge_resource_schema_url ( ) {
313
- // if both resources contains key value pairs
314
- let test_cases = vec ! [
315
- ( Some ( "http://schema/a" ) , None , Some ( "http://schema/a" ) ) ,
316
- ( Some ( "http://schema/a" ) , Some ( "http://schema/b" ) , None ) ,
317
- ( None , Some ( "http://schema/b" ) , Some ( "http://schema/b" ) ) ,
318
- (
319
- Some ( "http://schema/a" ) ,
320
- Some ( "http://schema/a" ) ,
321
- Some ( "http://schema/a" ) ,
322
- ) ,
323
- ( None , None , None ) ,
324
- ] ;
325
-
326
- for ( schema_url_a, schema_url_b, expected_schema_url) in test_cases. into_iter ( ) {
327
- let resource_a = Resource :: from_schema_url (
328
- vec ! [ KeyValue :: new( "key" , "" ) ] ,
329
- schema_url_a. unwrap_or ( "" ) ,
330
- ) ;
331
- let resource_b = Resource :: from_schema_url (
332
- vec ! [ KeyValue :: new( "key" , "" ) ] ,
333
- schema_url_b. unwrap_or ( "" ) ,
334
- ) ;
335
-
336
- let merged_resource = resource_a. merge ( & resource_b) ;
337
- let result_schema_url = merged_resource. schema_url ( ) ;
338
-
339
- assert_eq ! (
340
- result_schema_url. map( |s| s as & str ) ,
341
- expected_schema_url,
342
- "Merging schema_url_a {:?} with schema_url_b {:?} did not yield expected result {:?}" ,
343
- schema_url_a, schema_url_b, expected_schema_url
344
- ) ;
345
- }
346
-
347
- // if only one resource contains key value pairs
348
- let resource = Resource :: from_schema_url ( vec ! [ ] , "http://schema/a" ) ;
349
- let other_resource = Resource :: new ( vec ! [ KeyValue :: new( "key" , "" ) ] ) ;
313
+ #[ rstest]
314
+ #[ case( Some ( "http://schema/a" ) , None , Some ( "http://schema/a" ) ) ]
315
+ #[ case( Some ( "http://schema/a" ) , Some ( "http://schema/b" ) , None ) ]
316
+ #[ case( None , Some ( "http://schema/b" ) , Some ( "http://schema/b" ) ) ]
317
+ #[ case(
318
+ Some ( "http://schema/a" ) ,
319
+ Some ( "http://schema/a" ) ,
320
+ Some ( "http://schema/a" )
321
+ ) ]
322
+ #[ case( None , None , None ) ]
323
+ fn merge_resource_schema_url (
324
+ #[ case] schema_url_a : Option < & ' static str > ,
325
+ #[ case] schema_url_b : Option < & ' static str > ,
326
+ #[ case] expected_schema_url : Option < & ' static str > ,
327
+ ) {
328
+ let resource_a =
329
+ Resource :: from_schema_url ( vec ! [ KeyValue :: new( "key" , "" ) ] , schema_url_a. unwrap_or ( "" ) ) ;
330
+ let resource_b =
331
+ Resource :: from_schema_url ( vec ! [ KeyValue :: new( "key" , "" ) ] , schema_url_b. unwrap_or ( "" ) ) ;
332
+
333
+ let merged_resource = resource_a. merge ( & resource_b) ;
334
+ let result_schema_url = merged_resource. schema_url ( ) ;
335
+
336
+ assert_eq ! (
337
+ result_schema_url. map( |s| s as & str ) ,
338
+ expected_schema_url,
339
+ "Merging schema_url_a {:?} with schema_url_b {:?} did not yield expected result {:?}" ,
340
+ schema_url_a,
341
+ schema_url_b,
342
+ expected_schema_url
343
+ ) ;
344
+ }
350
345
351
- assert_eq ! ( resource. merge( & other_resource) . schema_url( ) , None ) ;
346
+ #[ rstest]
347
+ #[ case( vec![ ] , vec![ KeyValue :: new( "key" , "b" ) ] , "http://schema/a" , None ) ]
348
+ #[ case( vec![ KeyValue :: new( "key" , "a" ) ] , vec![ KeyValue :: new( "key" , "b" ) ] , "http://schema/a" , Some ( "http://schema/a" ) ) ]
349
+ fn merge_resource_with_missing_attribtes (
350
+ #[ case] key_values_a : Vec < KeyValue > ,
351
+ #[ case] key_values_b : Vec < KeyValue > ,
352
+ #[ case] schema_url : & ' static str ,
353
+ #[ case] expected_schema_url : Option < & ' static str > ,
354
+ ) {
355
+ let resource = Resource :: from_schema_url ( key_values_a, schema_url) ;
356
+ let other_resource = Resource :: new ( key_values_b) ;
357
+
358
+ assert_eq ! (
359
+ resource. merge( & other_resource) . schema_url( ) ,
360
+ expected_schema_url
361
+ ) ;
352
362
}
353
363
354
364
#[ test]
0 commit comments