diff --git a/lib/faker/default/types.rb b/lib/faker/default/types.rb index 642e9001cf..36bd2f1fc4 100644 --- a/lib/faker/default/types.rb +++ b/lib/faker/default/types.rb @@ -72,7 +72,7 @@ def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100) # Faker::Types.rb_hash(number: 2) #=> {name: "bob", last: "marley"} # # @faker.version 1.8.6 - def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: random_type) + def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: -> { random_type }) warn_for_deprecated_arguments do |keywords| keywords << :number if legacy_number != NOT_GIVEN keywords << :type if legacy_type != NOT_GIVEN @@ -80,7 +80,8 @@ def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: {}.tap do |hsh| Lorem.words(number: number * 2).uniq.first(number).each do |s| - hsh.merge!(s.to_sym => type) + value = type.is_a?(Proc) ? type.call : type + hsh.merge!(s.to_sym => value) end end end @@ -102,7 +103,7 @@ def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1) keywords << :number if legacy_number != NOT_GIVEN end - rb_hash(number: number, type: random_complex_type) + rb_hash(number: number, type: -> { random_complex_type }) end ## diff --git a/test/faker/default/test_faker_types.rb b/test/faker/default/test_faker_types.rb index 9e57ad1e68..769e97c5ae 100644 --- a/test/faker/default/test_faker_types.rb +++ b/test/faker/default/test_faker_types.rb @@ -41,6 +41,7 @@ def test_rb_hash_returns_a_hash def test_hash_returns_the_correct_number_of_keys assert @tester.rb_hash(number: 3).keys.length == 3 + assert @tester.rb_hash(number: 3).values.uniq.length > 1 assert @tester.rb_hash(number: 0).keys.empty? assert @tester.rb_hash.keys.length == 1 end @@ -51,6 +52,7 @@ def test_complex_rb_hash_returns_a_hash def test_complex_hash_returns_the_correct_number_of_keys assert @tester.complex_rb_hash(number: 3).keys.length == 3 + assert @tester.complex_rb_hash(number: 3).values.uniq.length > 1 assert @tester.complex_rb_hash(number: 0).keys.empty? assert @tester.complex_rb_hash.keys.length == 1 end