From 45bdf351bc5bf620f293ceccd9446b6bf40e4805 Mon Sep 17 00:00:00 2001 From: Ashish Rao Date: Thu, 19 Aug 2021 21:59:06 +0530 Subject: [PATCH] add brand, vendor support to commerce (#1601) (#1731) * add brands and vendors to commerce * add YARD docs for brand and vendor * modified to list * add brands and vendors to commerce * modified to list --- doc/default/commerce.md | 8 +++++++ lib/faker/default/commerce.rb | 28 +++++++++++++++++++++++ lib/locales/en/commerce.yml | 17 ++++++++++++++ test/faker/default/test_faker_commerce.rb | 8 +++++++ 4 files changed, 61 insertions(+) diff --git a/doc/default/commerce.md b/doc/default/commerce.md index bb58416525..b8d751ab00 100644 --- a/doc/default/commerce.md +++ b/doc/default/commerce.md @@ -21,4 +21,12 @@ Faker::Commerce.price(range: 0..10.0, as_string: true) #=> "2.18" # Keyword arguments: digits Faker::Commerce.promotion_code #=> "AmazingDeal829102" Faker::Commerce.promotion_code(digits: 2) #=> "AmazingPrice57" + +Faker::Commerce.material #=> "Plastic" + +# Generate a random brand +Faker::Commerce.brand #=> "Apple" + +# Generate a random vendor +Faker::Commerce.vendor #=> "Walmart" ``` diff --git a/lib/faker/default/commerce.rb b/lib/faker/default/commerce.rb index a01e3bc608..939b7f32f3 100644 --- a/lib/faker/default/commerce.rb +++ b/lib/faker/default/commerce.rb @@ -126,6 +126,34 @@ def price(legacy_range = NOT_GIVEN, legacy_as_string = NOT_GIVEN, range: 0..100. price end + ## + # Produces a randomized string of a brand name + # @example + # Faker::Commerce.brand #=> 'Apple' + # + # @return [string] + # + # @faker.version next + # + ## + def brand + fetch('commerce.brand') + end + + ## + # Produces a randomized string of a vendor name + # @example + # Faker::Commerce.vendor #=> 'Dollar General' + # + # @return [string] + # + # @faker.version next + # + ## + def vendor + fetch('commerce.vendor') + end + private def categories(num) diff --git a/lib/locales/en/commerce.yml b/lib/locales/en/commerce.yml index f314584c51..820a7e9621 100644 --- a/lib/locales/en/commerce.yml +++ b/lib/locales/en/commerce.yml @@ -9,3 +9,20 @@ en: promotion_code: adjective: ['Amazing', 'Awesome', 'Cool', 'Good', 'Great', 'Incredible', 'Killer', 'Premium', 'Special', 'Stellar', 'Sweet'] noun: ['Code', 'Deal', 'Discount', 'Price', 'Promo', 'Promotion', 'Sale', 'Savings'] + brand: ['Samsung', + 'Dell', + 'Nike', + 'Apple', + 'LG', + 'Adidas', + 'Nikon', + 'Sony', + 'Beats', + 'GoPro' + ] + vendor: [ + 'Amazon', + 'Dollar General', + 'Walmart', + 'Target' + ] \ No newline at end of file diff --git a/test/faker/default/test_faker_commerce.rb b/test/faker/default/test_faker_commerce.rb index 5ae0f2fccb..4d85f0a6e1 100644 --- a/test/faker/default/test_faker_commerce.rb +++ b/test/faker/default/test_faker_commerce.rb @@ -95,4 +95,12 @@ def test_when_as_string_is_true assert @tester.price(range: 0..100.0, as_string: true).is_a?(String) assert @tester.price(range: 100..500.0, as_string: true).include?('.') end + + def test_brand + assert @tester.brand.match(/[A-Z][a-z]+\.?/) + end + + def test_vendor + assert @tester.vendor.match(/[A-Z][a-z]+\.?/) + end end