diff --git a/doc/default/types.md b/doc/default/types.md index 826f2dbd06..57c63e2907 100644 --- a/doc/default/types.md +++ b/doc/default/types.md @@ -25,6 +25,7 @@ Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley" # Random Array Faker::Types.rb_array #=> ["a"] Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"] +Faker::Types.rb_array(len: 2, type: -> { Faker::Types.rb_string }) #=> ["cat", "foo"] # Random Type (string, or integer) Faker::Types.random_type #=> 1 or "a" or "bob" diff --git a/lib/faker/default/types.rb b/lib/faker/default/types.rb index b1a60faa6b..3ee3378dc8 100644 --- a/lib/faker/default/types.rb +++ b/lib/faker/default/types.rb @@ -97,12 +97,13 @@ def complex_rb_hash(number: 1) # @example # Faker::Types.rb_array #=> ["a"] # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"] + # Faker::Types.rb_array(len: 2, type: -> { Faker::Types.rb_string }) #=> ["cat", "foo"] # # @faker.version 1.8.6 - def rb_array(len: 1) + def rb_array(len: 1, type: -> { random_type }) [].tap do |ar| len.times do - ar.push random_type + ar.push type.is_a?(Proc) ? type.call : type end end end diff --git a/test/faker/default/test_faker_types.rb b/test/faker/default/test_faker_types.rb index 6b370e93a0..0ffc31fe27 100644 --- a/test/faker/default/test_faker_types.rb +++ b/test/faker/default/test_faker_types.rb @@ -62,6 +62,12 @@ def test_rb_array_returns_array assert_instance_of Array, @tester.rb_array end + def test_rb_array_returns_right_type_of_array + @tester.rb_array(len: 3, type: -> { @tester.rb_string }).each do |value| + assert_instance_of String, value + end + end + def test_array_has_the_right_array assert_equal(3, @tester.rb_array(len: 3).length) assert_empty @tester.rb_array(len: 0)