@@ -211,3 +211,108 @@ class TestUUID4Provider(object):
211
211
@pytest .mark .parametrize ('value, expected' , [(None , uuid .UUID ), ('Foo' , uuid .UUID )])
212
212
def test_alter_value (self , value , expected ):
213
213
assert type (providers .UUID4Provider .alter_value (value )) == expected
214
+
215
+
216
+ class TestUpdateJSONProvider (object ):
217
+
218
+ @pytest .mark .parametrize ('value, update_values_type, expected' , [
219
+ ({'foo' : 'bar' }, {'str' : {'provider' : {'name' : 'set' , 'value' : 'foobar' }}}, {'foo' : 'foobar' }),
220
+ ({'chef' : 'cuisine' }, {'str' : {'provider' : {'name' : 'uuid4' }}}, {'chef' : uuid .UUID })
221
+ ])
222
+ def test_str_type (self , value , update_values_type , expected ):
223
+ res = providers .UpdateJSONProvider .alter_value (value , update_values_type = update_values_type )
224
+ if res .get ('foo' ):
225
+ assert res ['foo' ] == expected ['foo' ]
226
+ if res .get ('chef' ):
227
+ assert type (res ['chef' ]) is expected ['chef' ]
228
+
229
+ def test_int_type (self ):
230
+ test_dict = {'foo' : 123 }
231
+
232
+ update_values_type = {'int' : {'provider' : {'name' : 'set' , 'value' : 999 }}}
233
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
234
+ assert res ['foo' ] == 999
235
+
236
+ update_values_type = {'int' : {'provider' : {'name' : 'clear' }}}
237
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
238
+ assert res ['foo' ] is None
239
+
240
+ def test_float_type (self ):
241
+ test_dict = {'foo' : 123.45 , 'bar' : 234.77 }
242
+
243
+ update_values_type = {'float' : {'provider' : {'name' : 'set' , 'value' : 999.99 }}}
244
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
245
+ assert res ['foo' ] == 999.99
246
+ assert res ['bar' ] == 999.99
247
+
248
+ update_values_type = {'float' : {'provider' : {'name' : 'clear' }}}
249
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
250
+ assert res ['foo' ] is None
251
+
252
+ def test_multi_types (self ):
253
+ test_dict = {
254
+ 'fooInt' : 123 ,
255
+ 'fooFloat' : 123.45 ,
256
+ 'fooStr' : 'some foo' ,
257
+ 'barStr' : 'some bar'
258
+ }
259
+ update_values_type = {
260
+ 'int' : {'provider' : {'name' : 'set' , 'value' : 999 }},
261
+ 'float' : {'provider' : {'name' : 'set' , 'value' : 999.99 }},
262
+ 'str' : {'provider' : {'name' : 'set' , 'value' : 'foobar' }},
263
+ }
264
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
265
+ assert res ['fooInt' ] == 999
266
+ assert res ['fooFloat' ] == 999.99
267
+ assert res ['fooStr' ] == 'foobar'
268
+ assert res ['barStr' ] == 'foobar'
269
+
270
+ def test_type_not_specified (self ):
271
+ test_dict = {
272
+ 'fooInt' : 123 ,
273
+ 'fooFloat' : 123.45 ,
274
+ 'fooStr' : 'some foo' ,
275
+ 'barStr' : 'some bar'
276
+ }
277
+ update_values_type = {
278
+ 'int' : {'provider' : {'name' : 'set' , 'value' : 999 }},
279
+ }
280
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
281
+ assert res ['fooInt' ] == 999
282
+ assert res ['fooFloat' ] == 123.45
283
+ assert res ['fooStr' ] == 'some foo'
284
+ assert res ['barStr' ] == 'some bar'
285
+
286
+ def test_nested_json (self ):
287
+ test_dict = {
288
+ 'fooInt' : 123 ,
289
+ 'fooFloat' : 123.45 ,
290
+ 'fooStr' : 'some foo' ,
291
+ 'barStr' : 'some bar' ,
292
+ 'nested' : {
293
+ 'fooInt' : 444 ,
294
+ 'fooFloat' : 50.9 ,
295
+ 'fooStr' : 'abc' ,
296
+ 'anotherNested' : {
297
+ 'fooInt' : 555 ,
298
+ 'fooFloat' : 6000.123 ,
299
+ 'fooStr' : 'xyz' ,
300
+ }
301
+ }
302
+ }
303
+ update_values_type = {
304
+ 'int' : {'provider' : {'name' : 'set' , 'value' : 999 }},
305
+ 'float' : {'provider' : {'name' : 'set' , 'value' : 999.99 }},
306
+ 'str' : {'provider' : {'name' : 'set' , 'value' : 'foobar' }},
307
+ }
308
+ res = providers .UpdateJSONProvider .alter_value (test_dict , update_values_type = update_values_type )
309
+ assert res ['fooInt' ] == 999
310
+ assert res ['fooFloat' ] == 999.99
311
+ assert res ['fooStr' ] == 'foobar'
312
+ assert res ['barStr' ] == 'foobar'
313
+ assert res ['nested' ]['fooInt' ] == 999
314
+ assert res ['nested' ]['fooFloat' ] == 999.99
315
+ assert res ['nested' ]['fooStr' ] == 'foobar'
316
+ assert res ['nested' ]['anotherNested' ]['fooInt' ] == 999
317
+ assert res ['nested' ]['anotherNested' ]['fooFloat' ] == 999.99
318
+ assert res ['nested' ]['anotherNested' ]['fooStr' ] == 'foobar'
0 commit comments