ffaker 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|