@@ -243,13 +243,61 @@ mod tests {
243243 #[ test]
244244 fn test_json_config_overrides_from_key_value_config_overrides ( ) {
245245 let key_value_config_overrides = KeyValueConfigOverrides {
246- overrides : [ ( "a " . to_owned ( ) , Some ( "b " . to_owned ( ) ) ) ] . into ( ) ,
246+ overrides : [ ( "key " . to_owned ( ) , Some ( "value " . to_owned ( ) ) ) ] . into ( ) ,
247247 } ;
248248
249249 let actual_json_config_overrides: JsonConfigOverrides = key_value_config_overrides. into ( ) ;
250250
251- let expected_json_config_overrides = JsonConfigOverrides :: JsonMergePatch ( json ! ( { "a" : "b" } ) ) ;
251+ let expected_json_config_overrides =
252+ JsonConfigOverrides :: JsonMergePatch ( json ! ( { "key" : "value" } ) ) ;
252253
253254 assert_eq ! ( expected_json_config_overrides, actual_json_config_overrides) ;
254255 }
256+
257+ #[ test]
258+ fn test_json_config_overrides_from_json_or_key_value_config_overrides ( ) {
259+ let key_value_config_overrides =
260+ JsonOrKeyValueConfigOverrides :: KeyValue ( KeyValueConfigOverrides {
261+ overrides : [ ( "key" . to_owned ( ) , Some ( "value" . to_owned ( ) ) ) ] . into ( ) ,
262+ } ) ;
263+
264+ let actual_json_config_overrides: JsonConfigOverrides = key_value_config_overrides. into ( ) ;
265+
266+ let expected_json_config_overrides =
267+ JsonConfigOverrides :: JsonMergePatch ( json ! ( { "key" : "value" } ) ) ;
268+
269+ assert_eq ! ( expected_json_config_overrides, actual_json_config_overrides) ;
270+ }
271+
272+ #[ test]
273+ fn test_json_or_key_value_config_overrides_merge ( ) {
274+ let base = JsonOrKeyValueConfigOverrides :: KeyValue ( KeyValueConfigOverrides {
275+ overrides : [
276+ ( "keyA" . to_owned ( ) , Some ( "base A" . to_owned ( ) ) ) ,
277+ ( "keyB" . to_owned ( ) , Some ( "base B" . to_owned ( ) ) ) ,
278+ ]
279+ . into ( ) ,
280+ } ) ;
281+
282+ let patch = JsonOrKeyValueConfigOverrides :: KeyValue ( KeyValueConfigOverrides {
283+ overrides : [
284+ ( "keyB" . to_owned ( ) , Some ( "patch B" . to_owned ( ) ) ) ,
285+ ( "keyC" . to_owned ( ) , Some ( "patch C" . to_owned ( ) ) ) ,
286+ ]
287+ . into ( ) ,
288+ } ) ;
289+
290+ // The merge implementation internally converts KeyValueConfigOverrides to
291+ // JsonConfigOverrides. It is already tested in [`test_json_config_overrides_merge`] that
292+ // merging JsonConfigOverrides works. Therefore, one test case with KeyValueConfigOverrides
293+ // is sufficient.
294+ assert_eq ! (
295+ JsonOrKeyValueConfigOverrides :: Json ( JsonConfigOverrides :: JsonMergePatch ( json!( {
296+ "keyA" : "base A" ,
297+ "keyB" : "patch B" ,
298+ "keyC" : "patch C"
299+ } ) ) ) ,
300+ merge:: merge( patch, & base)
301+ ) ;
302+ }
255303}
0 commit comments