ffaker 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +32 -0
- data/README.md +7 -6
- data/REFERENCE.md +1355 -0
- data/Rakefile +6 -6
- data/ffaker.gemspec +16 -3
- data/lib/ffaker.rb +1 -1
- data/lib/ffaker/address_ca.rb +3 -3
- data/lib/ffaker/avatar.rb +20 -0
- data/lib/ffaker/bacon_ipsum.rb +1 -1
- data/lib/ffaker/data/job_cn/job_nouns +300 -0
- data/lib/ffaker/data/sport/names +34 -0
- data/lib/ffaker/dizzle_ipsum.rb +1 -1
- data/lib/ffaker/healthcare_ipsum.rb +1 -1
- data/lib/ffaker/hipster_ipsum.rb +1 -1
- data/lib/ffaker/html_ipsum.rb +1 -1
- data/lib/ffaker/identification_kr.rb +20 -0
- data/lib/ffaker/identification_mx.rb +3 -3
- data/lib/ffaker/internet.rb +3 -3
- data/lib/ffaker/internet_se.rb +1 -1
- data/lib/ffaker/job_cn.rb +12 -0
- data/lib/ffaker/job_fr.rb +6 -2
- data/lib/ffaker/locale.rb +1 -1
- data/lib/ffaker/lorem.rb +7 -5
- data/lib/ffaker/lorem_ar.rb +1 -1
- data/lib/ffaker/lorem_cn.rb +1 -1
- data/lib/ffaker/lorem_fr.rb +1 -1
- data/lib/ffaker/lorem_kr.rb +1 -1
- data/lib/ffaker/movie.rb +6 -0
- data/lib/ffaker/phone_number.rb +46 -17
- data/lib/ffaker/product.rb +1 -1
- data/lib/ffaker/skill.rb +1 -1
- data/lib/ffaker/sport.rb +10 -0
- data/lib/ffaker/string.rb +22 -11
- data/lib/ffaker/utils/array_utils.rb +4 -3
- data/lib/ffaker/vehicle.rb +1 -1
- data/scripts/reference.rb +89 -0
- data/test/test_address_ca.rb +6 -4
- data/test/test_array_utils.rb +3 -3
- data/test/test_avatar.rb +50 -0
- data/test/test_company.rb +8 -6
- data/test/test_identification.rb +5 -4
- data/test/test_identification_kr.rb +13 -0
- data/test/test_internet.rb +4 -0
- data/test/test_job.rb +1 -2
- data/test/test_job_cn.rb +17 -0
- data/test/test_job_fr.rb +4 -7
- data/test/test_job_ja.rb +1 -1
- data/test/test_job_kr.rb +1 -1
- data/test/test_locale.rb +21 -0
- data/test/test_lorem_kr.rb +1 -1
- data/test/test_movie.rb +8 -0
- data/test/test_name.rb +3 -3
- data/test/test_name_br.rb +7 -8
- data/test/test_name_cs.rb +8 -6
- data/test/test_name_de.rb +3 -3
- data/test/test_name_fr.rb +15 -17
- data/test/test_name_ga.rb +12 -14
- data/test/test_name_it.rb +14 -15
- data/test/test_name_ja.rb +1 -1
- data/test/test_name_mx.rb +82 -80
- data/test/test_name_nb.rb +6 -9
- data/test/test_name_nl.rb +3 -3
- data/test/test_name_ph.rb +12 -2
- data/test/test_name_ru.rb +14 -10
- data/test/test_name_se.rb +6 -9
- data/test/test_name_sn.rb +39 -52
- data/test/test_name_th.rb +7 -9
- data/test/test_phone_number.rb +9 -0
- data/test/test_sports.rb +13 -0
- data/test/test_string.rb +26 -16
- data/test/test_units.rb +8 -10
- data/test/test_units_english.rb +15 -22
- data/test/test_units_metric.rb +15 -21
- metadata +22 -4
@@ -7,8 +7,8 @@ module FFaker
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.random_pick(array, n)
|
10
|
-
|
11
|
-
|
10
|
+
warn '[ArrayUtils.random_pick] is deprecated. Please use the Array#sample method'
|
11
|
+
array.sample(n)
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.rand(array)
|
@@ -27,7 +27,8 @@ module FFaker
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def random_pick(n)
|
30
|
-
ArrayUtils
|
30
|
+
warn '[ArrayUtils#random_pick] is deprecated. Please use the Array#sample method'
|
31
|
+
self.sample(n)
|
31
32
|
end
|
32
33
|
|
33
34
|
def rand
|
data/lib/ffaker/vehicle.rb
CHANGED
@@ -26,7 +26,7 @@ module FFaker
|
|
26
26
|
|
27
27
|
def manufacturer_color(n=2)
|
28
28
|
# Take two prefixes because it's more fun than one
|
29
|
-
|
29
|
+
(COLOR_PREFIXES.sample(n) + [base_color]).join(' ')
|
30
30
|
end
|
31
31
|
alias_method :mfg_color, :manufacturer_color
|
32
32
|
|
@@ -0,0 +1,89 @@
|
|
1
|
+
$: << File.dirname(__FILE__) + '/../lib'
|
2
|
+
require 'ffaker'
|
3
|
+
|
4
|
+
ICONS = {
|
5
|
+
:error => "‼️",
|
6
|
+
:warning => "❗"
|
7
|
+
}
|
8
|
+
|
9
|
+
# Get a list of sections
|
10
|
+
def faker_modules
|
11
|
+
FFaker.constants.map do |const|
|
12
|
+
mod = FFaker.const_get(const)
|
13
|
+
next unless mod.is_a?(Module)
|
14
|
+
next if mod == FFaker::ArrayUtils
|
15
|
+
next if mod == FFaker::ModuleUtils
|
16
|
+
mod
|
17
|
+
end.compact
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns faker methods for a given module
|
21
|
+
def faker_methods(mod)
|
22
|
+
methods = mod.methods - Module.methods - [:k, :underscore]
|
23
|
+
|
24
|
+
# For Company.name (et al), don't discard :name if it was reimplemented
|
25
|
+
methods << :name if mod.send(:name) != mod.to_s
|
26
|
+
methods
|
27
|
+
end
|
28
|
+
|
29
|
+
# Catch deprecation warnings.
|
30
|
+
# This `#warn` overrides Kernel#warn
|
31
|
+
def warn(msg)
|
32
|
+
$warnings << msg if $warnings
|
33
|
+
end
|
34
|
+
|
35
|
+
def catch_warnings(&blk)
|
36
|
+
$warnings = []
|
37
|
+
[yield, $warnings]
|
38
|
+
end
|
39
|
+
|
40
|
+
def escape(str)
|
41
|
+
str.gsub('&', '&').gsub('<', '<').gsub('>', '>').gsub("\n", '')
|
42
|
+
end
|
43
|
+
|
44
|
+
sections = faker_modules.each.map do |mod|
|
45
|
+
lines = []
|
46
|
+
|
47
|
+
methods = faker_methods(mod)
|
48
|
+
lines << "## #{mod}"
|
49
|
+
lines << ""
|
50
|
+
lines << "| Method | Example |"
|
51
|
+
lines << "| ------ | ------- |"
|
52
|
+
|
53
|
+
methods.sort.each do |meth|
|
54
|
+
arity = mod.method(meth).arity
|
55
|
+
|
56
|
+
left = "`#{meth}`"
|
57
|
+
right =''
|
58
|
+
|
59
|
+
if arity > 0
|
60
|
+
left = "`#{meth}`(#{arity.times.map{'...'}.join(', ')})"
|
61
|
+
else
|
62
|
+
begin
|
63
|
+
examples, warnings = catch_warnings {
|
64
|
+
3.times.map { mod.send meth }
|
65
|
+
}
|
66
|
+
if warnings.any?
|
67
|
+
right = "#{ICONS[:warning]} *#{warnings.first}*"
|
68
|
+
else
|
69
|
+
right = "#{escape examples.join(', ')}"
|
70
|
+
end
|
71
|
+
rescue => e
|
72
|
+
right = "#{ICONS[:error]} #{e.class}: #{e.message}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
lines << "| #{left} | #{right} |"
|
77
|
+
end
|
78
|
+
|
79
|
+
lines << ""
|
80
|
+
end
|
81
|
+
|
82
|
+
puts "# FFaker reference"
|
83
|
+
puts ""
|
84
|
+
faker_modules.each do |mod|
|
85
|
+
name = mod.to_s.downcase.gsub(':', '')
|
86
|
+
puts " * [#{mod}](##{name})"
|
87
|
+
end
|
88
|
+
puts ""
|
89
|
+
puts sections.flatten.join("\n")
|
data/test/test_address_ca.rb
CHANGED
@@ -4,18 +4,20 @@ require 'helper'
|
|
4
4
|
|
5
5
|
class TestAddressCA < Test::Unit::TestCase
|
6
6
|
def test_province
|
7
|
-
assert_match
|
7
|
+
assert_match(/\A[ a-z]+\z/i, FFaker::AddressCA.province)
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_province_abbr
|
11
|
-
assert_match
|
11
|
+
assert_match(/\A[A-Z]{2}\z/, FFaker::AddressCA.province_abbr)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_city
|
15
|
-
|
15
|
+
assert_include(FFaker::AddressCA::CITY, FFaker::AddressCA.city)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_postal_code
|
19
|
-
assert_match
|
19
|
+
assert_match(
|
20
|
+
/\A[A-CEGHJK-NPR-TVXY]\d[A-CEGHJK-NPR-TV-Z] \d[A-CEGHJK-NPR-TV-Z]\d\z/,
|
21
|
+
FFaker::AddressCA.postal_code)
|
20
22
|
end
|
21
23
|
end
|
data/test/test_array_utils.rb
CHANGED
@@ -22,12 +22,12 @@ class TestArrayUtils < Test::Unit::TestCase
|
|
22
22
|
assert set == @elems
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
assert_equal @array.
|
25
|
+
def test_provides_a_way_of_getting_n_random_elements
|
26
|
+
assert_equal @array.sample(3).sort, @array.sort
|
27
27
|
|
28
28
|
1.upto(3) do |n|
|
29
29
|
1000.times do
|
30
|
-
new_arr = @array.
|
30
|
+
new_arr = @array.sample(n)
|
31
31
|
assert_equal n, new_arr.length
|
32
32
|
new_arr.each do |e|
|
33
33
|
assert @elems.include? e
|
data/test/test_avatar.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestAvatar < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@tester = FFaker::Avatar
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_avatar
|
9
|
+
assert_match(/\Ahttp:\/\/robohash\.org\/.+\.png\?size=300x300\z/,
|
10
|
+
@tester.image)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_avatar_with_param
|
14
|
+
assert_equal('http://robohash.org/faker.png?size=300x300',
|
15
|
+
@tester.image('faker'))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_avatar_with_correct_size
|
19
|
+
assert_equal('http://robohash.org/faker.png?size=150x320',
|
20
|
+
@tester.image('faker', '150x320'))
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_avatar_with_incorrect_size
|
24
|
+
assert_raise ArgumentError do
|
25
|
+
@tester.image(nil, '150x320z')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_avatar_with_supported_format
|
30
|
+
assert_equal('http://robohash.org/faker.jpg?size=300x300',
|
31
|
+
@tester.image('faker', '300x300', 'jpg'))
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_avatar_with_incorrect_format
|
35
|
+
assert_raise ArgumentError do
|
36
|
+
@tester.image(nil, '300x300', 'wrong_format')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_avatar_with_correct_background
|
41
|
+
assert_equal('http://robohash.org/faker.png?size=300x300&bgset=bg1',
|
42
|
+
@tester.image('faker', '300x300', 'png', '1'))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_avatar_with_incorrect_background
|
46
|
+
assert_raise ArgumentError do
|
47
|
+
@tester.image('faker', '300x300', 'png', 'not_a_number')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/test/test_company.rb
CHANGED
@@ -3,21 +3,23 @@
|
|
3
3
|
require 'helper'
|
4
4
|
|
5
5
|
class TestCompany < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@tester = FFaker::Company
|
8
|
+
end
|
9
|
+
|
6
10
|
def test_bs
|
7
|
-
assert_match
|
8
|
-
assert_match /\s/, FFaker::Company.bs
|
11
|
+
assert_match(/\A[ \w'\/-]+\z/, @tester.bs)
|
9
12
|
end
|
10
13
|
|
11
14
|
def test_catch_phrase
|
12
|
-
assert_match
|
13
|
-
assert_match /\s/, FFaker::Company.catch_phrase
|
15
|
+
assert_match(/\A[ \w'\/-]+\z/, @tester.catch_phrase)
|
14
16
|
end
|
15
17
|
|
16
18
|
def test_name
|
17
|
-
assert_match
|
19
|
+
assert_match(/\A[ \w,'-]+\z/, @tester.name)
|
18
20
|
end
|
19
21
|
|
20
22
|
def test_suffix
|
21
|
-
|
23
|
+
assert_include @tester::SUFFIXES, @tester.suffix
|
22
24
|
end
|
23
25
|
end
|
data/test/test_identification.rb
CHANGED
@@ -9,19 +9,20 @@ class TestFakerIdentification < Test::Unit::TestCase
|
|
9
9
|
|
10
10
|
def test_drivers_license
|
11
11
|
###-###-##-###-#
|
12
|
-
|
12
|
+
drivers_license_regex = /\A[A-Z]\d{3}-\d{3}-\d{2}-\d{3}-\d{1}\z/
|
13
|
+
assert_match drivers_license_regex, @tester.drivers_license
|
13
14
|
end
|
14
15
|
|
15
16
|
def test_ssn
|
16
|
-
assert_match
|
17
|
+
assert_match(/\A\d{3}-\d{2}-\d{4}\z/, @tester.ssn)
|
17
18
|
end
|
18
19
|
|
19
20
|
def test_gender
|
20
|
-
assert_match
|
21
|
+
assert_match(/\A(Male|Female)\z/, @tester.gender)
|
21
22
|
end
|
22
23
|
|
23
24
|
def test_ethnicity
|
24
|
-
ethnicity_regex =
|
25
|
+
ethnicity_regex = /\A(African American|Asian\/Pacific Islander|Caucasian|Hispanic|Native American|Multiracial|Other|Prefer not to respond)\z/
|
25
26
|
assert_match ethnicity_regex, @tester.ethnicity
|
26
27
|
end
|
27
28
|
end
|
data/test/test_internet.rb
CHANGED
@@ -81,6 +81,10 @@ class TestFakerInternet < Test::Unit::TestCase
|
|
81
81
|
assert @tester.password(1, 3).length < 4
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_password_fixed_length
|
85
|
+
assert @tester.password(20, 20).length == 20
|
86
|
+
end
|
87
|
+
|
84
88
|
def test_password_strange_argument
|
85
89
|
assert @tester.password(10, 2).length > 9
|
86
90
|
assert @tester.password(3, 1).length > 2
|
data/test/test_job.rb
CHANGED
data/test/test_job_cn.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestFakerJobCN < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@tester = FFaker::JobCN
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_title
|
11
|
+
assert @tester.title.length >= 1
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_nouns
|
15
|
+
assert_kind_of Array, @tester::JOB_NOUNS
|
16
|
+
end
|
17
|
+
end
|
data/test/test_job_fr.rb
CHANGED
@@ -8,15 +8,12 @@ class TestFakerJobFr < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_title
|
11
|
-
|
11
|
+
assert_match(/\A([a-zàâçéèêëîïôûùüÿñæœ]+\.? ?){2,}\z/, @tester.title)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
14
|
def test_prefix
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
assert_kind_of Array, @tester::JOB_PREFIXES
|
16
|
+
assert_kind_of Array, @tester::JOB_ADJECTIVES
|
17
|
+
assert_kind_of Array, @tester::JOB_NOUNS
|
19
18
|
end
|
20
19
|
end
|
21
|
-
|
22
|
-
|
data/test/test_job_ja.rb
CHANGED
data/test/test_job_kr.rb
CHANGED
data/test/test_locale.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestLocale < Test::Unit::TestCase
|
6
|
+
def test_code
|
7
|
+
assert_match /./, FFaker::Locale.code
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_language
|
11
|
+
assert_match /./, FFaker::Locale.language
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_language_with_args
|
15
|
+
assert_match 'French', FFaker::Locale.language('FR')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_code_with_args
|
19
|
+
assert_match 'FR', FFaker::Locale.code('French')
|
20
|
+
end
|
21
|
+
end
|
data/test/test_lorem_kr.rb
CHANGED
data/test/test_movie.rb
CHANGED
@@ -3,7 +3,15 @@
|
|
3
3
|
require 'helper'
|
4
4
|
|
5
5
|
class TestMovie < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@tester = FFaker::Movie
|
8
|
+
end
|
9
|
+
|
6
10
|
def test_title
|
7
11
|
assert_match /[ a-z]+/, FFaker::Movie.title
|
8
12
|
end
|
13
|
+
|
14
|
+
def test_rating
|
15
|
+
assert FFaker::Movie::RATINGS.include? @tester.rating
|
16
|
+
end
|
9
17
|
end
|
data/test/test_name.rb
CHANGED
@@ -8,14 +8,14 @@ class TestFakerName < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_name
|
11
|
-
|
11
|
+
assert_match(/(\w+\.? ?){2,3}/, @tester.name)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_prefix
|
15
|
-
|
15
|
+
assert_match(/[A-Z][a-z]+\.?/, @tester.prefix)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_suffix
|
19
|
-
|
19
|
+
assert_match(/[A-Z][a-z]*\.?/, @tester.suffix)
|
20
20
|
end
|
21
21
|
end
|
data/test/test_name_br.rb
CHANGED
@@ -8,25 +8,24 @@ class TestFakerNameBR < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_name
|
11
|
-
assert_match
|
11
|
+
assert_match(/\A[[:alpha:]]+ [[:alpha:]]+\z/, @tester.name)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_name_with_prefix
|
15
|
-
|
16
|
-
|
17
|
-
assert
|
18
|
-
assert(parts[1].length > 0)
|
15
|
+
prefix, name = @tester.name_with_prefix.split(/\s+/)
|
16
|
+
assert_include(@tester::PREFIXES, prefix)
|
17
|
+
assert(name.length > 0)
|
19
18
|
end
|
20
19
|
|
21
20
|
def test_first_name
|
22
|
-
|
21
|
+
assert_include(@tester::FIRST_NAMES, @tester.first_name)
|
23
22
|
end
|
24
23
|
|
25
24
|
def test_last_name
|
26
|
-
|
25
|
+
assert_include(@tester::LAST_NAMES, @tester.last_name)
|
27
26
|
end
|
28
27
|
|
29
28
|
def test_prefix
|
30
|
-
|
29
|
+
assert_include(@tester::PREFIXES, @tester.prefix)
|
31
30
|
end
|
32
31
|
end
|