diff --git a/lib/faker/default/internet.rb b/lib/faker/default/internet.rb index 176b12d293..686802548e 100644 --- a/lib/faker/default/internet.rb +++ b/lib/faker/default/internet.rb @@ -277,6 +277,14 @@ def uuid '%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString end + def user(*args) + user_hash = {} + args.each do |arg| + user_hash[:"#{arg}"] = send(arg) + end + user_hash + end + alias user_name username end end diff --git a/test/faker/default/test_faker_internet.rb b/test/faker/default/test_faker_internet.rb index 5590dfb74a..d231c3f74a 100644 --- a/test/faker/default/test_faker_internet.rb +++ b/test/faker/default/test_faker_internet.rb @@ -295,4 +295,23 @@ def test_uuid assert_equal(36, uuid.size) assert_match(/\A\h{8}-\h{4}-4\h{3}-\h{4}-\h{12}\z/, uuid) end + + def test_user_with_args + user = @tester.user('name', 'email', 'password') + assert user['name'].match(/[a-z]+((_|\.)[a-z]+)?/) + assert user['email'].match(/.+@.+\.\w+/) + assert user['password'].match(/\w{3}/) + end + + def test_user_without_args + user = @tester.user + assert user['name'].match(/[a-z]+((_|\.)[a-z]+)?/) + assert user['email'].match(/.+@.+\.\w+/) + end + + def test_user_with_invalid_args + assert_raises NoMethodError do + @tester.user('xyz') + end + end end