ffaker 2.12.0 → 2.13.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 +7 -0
- data/REFERENCE.md +32 -2
- data/ffaker.gemspec +2 -2
- data/lib/ffaker.rb +4 -1
- data/lib/ffaker/address_us.rb +22 -2
- data/lib/ffaker/bank.rb +15 -3
- data/lib/ffaker/color_pl.rb +14 -0
- data/lib/ffaker/data/address_ja/city +0 -23
- data/lib/ffaker/data/address_us/state_abbr +0 -1
- data/lib/ffaker/data/bank/card_types +12 -0
- data/lib/ffaker/data/book/nouns +2 -2
- data/lib/ffaker/data/color_pl/names_list +122 -0
- data/lib/ffaker/data/movie/nouns +2 -2
- data/lib/ffaker/data/name/first_names_female +0 -230
- data/lib/ffaker/data/name/first_names_male +0 -37
- data/lib/ffaker/data/sport_pl/summer +53 -0
- data/lib/ffaker/data/sport_pl/winter +14 -0
- data/lib/ffaker/data/vehicle/color_prefixes +25 -0
- data/lib/ffaker/identification_kr.rb +1 -1
- data/lib/ffaker/identification_pl.rb +77 -0
- data/lib/ffaker/internet.rb +3 -5
- data/lib/ffaker/sport_pl.rb +25 -0
- data/lib/ffaker/utils/random_utils.rb +2 -0
- data/lib/ffaker/vehicle.rb +1 -6
- data/test/helper.rb +35 -0
- data/test/test_address_us.rb +9 -0
- data/test/test_bank.rb +41 -5
- data/test/test_color_pl.rb +13 -0
- data/test/test_identification_co.rb +1 -1
- data/test/test_identification_pl.rb +28 -0
- data/test/test_internet.rb +9 -9
- data/test/test_job_cn.rb +1 -1
- data/test/test_job_ja.rb +1 -1
- data/test/test_job_kr.rb +1 -1
- data/test/test_job_vn.rb +1 -1
- data/test/test_lorem_cn.rb +6 -6
- data/test/test_lorem_ja.rb +3 -3
- data/test/test_name_da.rb +3 -3
- data/test/test_phone_number_se.rb +2 -2
- data/test/test_sport_pl.rb +30 -0
- data/test/test_ssn_se.rb +4 -6
- data/test/test_time.rb +13 -6
- data/test/test_tweet.rb +6 -6
- metadata +18 -9
- data/lib/ffaker/data/address_jp/city +0 -127
- data/lib/ffaker/data/address_jp/designated_city +0 -20
- data/lib/ffaker/data/address_jp/street +0 -37
- data/lib/ffaker/data/address_jp/tokyo_ward +0 -23
- data/lib/ffaker/data/address_jp/village +0 -183
- data/lib/ffaker/data/address_jp/ward +0 -188
data/lib/ffaker/vehicle.rb
CHANGED
@@ -6,12 +6,7 @@ module FFaker
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
DRIVETRAINS = %w[4WD 4X4 AWD FWD RWD].freeze
|
9
|
-
YEARS = [*'1900'..(
|
10
|
-
COLOR_PREFIXES = k(%w[
|
11
|
-
beautiful bright calm dangerous dark dull fast magnetic magnificent
|
12
|
-
majestic melodic metallic mundane mute mysterious new pleasant pretty
|
13
|
-
resonant royal slate soft tranquil vibrant weak
|
14
|
-
])
|
9
|
+
YEARS = [*'1900'..(::Time.now.year + 1).to_s].freeze
|
15
10
|
TRANSMISSIONS_ABBR = %w[AT MT AM CVT].freeze
|
16
11
|
CYLINDERS = %w[2 5 6 8].freeze
|
17
12
|
|
data/test/helper.rb
CHANGED
@@ -28,6 +28,41 @@ module DeterministicHelper
|
|
28
28
|
assert(returns.uniq.length == 1, options[:message])
|
29
29
|
end
|
30
30
|
|
31
|
+
%w[< > <= >=].each do |operator|
|
32
|
+
operator_name =
|
33
|
+
case operator[0]
|
34
|
+
when '<' then 'less_than'
|
35
|
+
when '>' then 'greater_than'
|
36
|
+
else raise 'Unexpected operator'
|
37
|
+
end
|
38
|
+
operator_name += '_or_equal_to' if operator[1] == '='
|
39
|
+
|
40
|
+
define_method "assert_#{operator_name}" do |got, expected|
|
41
|
+
assert(
|
42
|
+
got.public_send(operator, expected),
|
43
|
+
"Expected #{operator} \"#{expected}\", but got #{got}"
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def assert_between(got, from, to, exclude_end: false)
|
49
|
+
assert_greater_than_or_equal_to got, from
|
50
|
+
public_send "assert_less_than#{'_or_equal_to' unless exclude_end}", got, to
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_random(original_block, *args)
|
54
|
+
100.times do
|
55
|
+
yield(*args)
|
56
|
+
assert_deterministic(&original_block)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
%w[less_than_or_equal_to between].each do |method_name|
|
61
|
+
define_method "assert_random_#{method_name}" do |*args, &block|
|
62
|
+
assert_random(block) { send "assert_#{method_name}", block.call, *args }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
31
66
|
# Methods to be called outside of individual examples.
|
32
67
|
module ClassMethods
|
33
68
|
# Shorthand method to quickly test the determinability of multiple methods.
|
data/test/test_address_us.rb
CHANGED
@@ -18,6 +18,15 @@ class TestAddressUSUS < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def test_us_state_abbr
|
20
20
|
assert_match(/[A-Z]/, FFaker::AddressUS.state_abbr)
|
21
|
+
%w[California california CALIFORNIA].each do |state|
|
22
|
+
assert_match('CA', FFaker::AddressUS.state_abbr(state))
|
23
|
+
end
|
24
|
+
['South Carolina', 'south carolina'].each do |state|
|
25
|
+
assert_match('SC', FFaker::AddressUS.state_abbr(state))
|
26
|
+
end
|
27
|
+
assert_raise ArgumentError, "Unexpected state: 'unknown'" do
|
28
|
+
FFaker::AddressUS.state_abbr('unknown')
|
29
|
+
end
|
21
30
|
end
|
22
31
|
|
23
32
|
def test_us_state_and_territories_abbr
|
data/test/test_bank.rb
CHANGED
@@ -5,14 +5,50 @@ require 'helper'
|
|
5
5
|
class TestBank < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::Bank,
|
10
|
+
:iban, :card_number, :card_expiry_date, :card_type
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::Bank
|
15
|
+
end
|
9
16
|
|
10
17
|
def test_iban
|
11
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
12
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
13
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
18
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban)
|
19
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban(country_code: 'by'))
|
20
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban(country_code: 'BY'))
|
14
21
|
assert_raise ArgumentError, "Unexpected country code: 'unknown'" do
|
15
|
-
|
22
|
+
@tester.iban(country_code: 'unknown')
|
16
23
|
end
|
17
24
|
end
|
25
|
+
|
26
|
+
def test_card_number
|
27
|
+
assert_match(/\A(\d{4} ){3}\d{4}\z/, @tester.card_number)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_card_expiry_date
|
31
|
+
assert_instance_of String, @tester.card_expiry_date
|
32
|
+
|
33
|
+
date_today = ::DateTime.now
|
34
|
+
|
35
|
+
assert_random_between(
|
36
|
+
date_today.strftime('%y'), date_today.next_year(5).strftime('%y')
|
37
|
+
) do
|
38
|
+
@tester.card_expiry_date.split('/').pop
|
39
|
+
end
|
40
|
+
|
41
|
+
year_range = 4
|
42
|
+
year_latest = 8
|
43
|
+
assert_random_between(
|
44
|
+
date_today.prev_year(year_latest + year_range).strftime('%y'),
|
45
|
+
date_today.prev_year(year_latest).strftime('%y')
|
46
|
+
) do
|
47
|
+
@tester.card_expiry_date(year_range: year_range, year_latest: year_latest).split('/').pop
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_card_type
|
52
|
+
assert_include @tester::CARD_TYPES, @tester.card_type
|
53
|
+
end
|
18
54
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestColorPL < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::ColorPL, :name)
|
9
|
+
|
10
|
+
def test_name
|
11
|
+
assert_match(/\A[a-ząćęłńóśźżé]+\z/, FFaker::ColorPL.name)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestFakerIdentificationPL < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::IdentificationPL,
|
10
|
+
:pesel, :identity_card, :drivers_license
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::IdentificationPL
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_pesel
|
18
|
+
assert_match(/\A\d{11}\z/, @tester.pesel)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_identity_card
|
22
|
+
assert_match(/\A[A-Z]{3}\d{6}\z/, @tester.identity_card)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_drivers_license
|
26
|
+
assert_match(%r{\A\d{5}/\d{2}/\d{4}\z}, @tester.drivers_license)
|
27
|
+
end
|
28
|
+
end
|
data/test/test_internet.rb
CHANGED
@@ -93,15 +93,15 @@ class TestFakerInternet < Test::Unit::TestCase
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_password_min_length
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
assert_greater_than @tester.password(3).length, 2
|
97
|
+
assert_greater_than @tester.password(6).length, 5
|
98
|
+
assert_greater_than @tester.password(15).length, 14
|
99
99
|
end
|
100
100
|
|
101
101
|
def test_password_max_length
|
102
|
-
|
103
|
-
|
104
|
-
|
102
|
+
assert_less_than @tester.password(3, 10).length, 11
|
103
|
+
assert_less_than @tester.password(7, 15).length, 16
|
104
|
+
assert_less_than @tester.password(1, 3).length, 4
|
105
105
|
end
|
106
106
|
|
107
107
|
def test_password_fixed_length
|
@@ -109,9 +109,9 @@ class TestFakerInternet < Test::Unit::TestCase
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def test_password_strange_argument
|
112
|
-
|
113
|
-
|
114
|
-
|
112
|
+
assert_greater_than @tester.password(10, 2).length, 9
|
113
|
+
assert_greater_than @tester.password(3, 1).length, 2
|
114
|
+
assert_greater_than @tester.password(8, 5).length, 7
|
115
115
|
end
|
116
116
|
|
117
117
|
def test_mac
|
data/test/test_job_cn.rb
CHANGED
data/test/test_job_ja.rb
CHANGED
data/test/test_job_kr.rb
CHANGED
data/test/test_job_vn.rb
CHANGED
data/test/test_lorem_cn.rb
CHANGED
@@ -11,15 +11,15 @@ class TestLoremCN < Test::Unit::TestCase
|
|
11
11
|
)
|
12
12
|
|
13
13
|
def test_paragraph
|
14
|
-
|
14
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.paragraph.length, 3 * 4 * 2
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_sentence
|
18
|
-
|
18
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.sentence.length, 4 * 2
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_paragraphs
|
22
|
-
|
22
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.paragraphs.length, 2
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_paragraphs_is_not_a_string_representation_of_an_array
|
@@ -31,7 +31,7 @@ class TestLoremCN < Test::Unit::TestCase
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_sentences
|
34
|
-
|
34
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.sentences.length, 2
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_sentences_is_an_array
|
@@ -45,10 +45,10 @@ class TestLoremCN < Test::Unit::TestCase
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_words
|
48
|
-
|
48
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.words.length, 2
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_word
|
52
|
-
|
52
|
+
assert_greater_than_or_equal_to FFaker::LoremCN.word.length, 1
|
53
53
|
end
|
54
54
|
end
|
data/test/test_lorem_ja.rb
CHANGED
@@ -33,7 +33,7 @@ class TestLoremJA < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_word
|
36
|
-
|
36
|
+
assert_greater_than_or_equal_to @subject.word.length, 1
|
37
37
|
assert_kind_of String, @subject.word
|
38
38
|
end
|
39
39
|
|
@@ -48,7 +48,7 @@ class TestLoremJA < Test::Unit::TestCase
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def test_sentence
|
51
|
-
|
51
|
+
assert_greater_than_or_equal_to @subject.sentence.length, 1
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_sentences
|
@@ -62,7 +62,7 @@ class TestLoremJA < Test::Unit::TestCase
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_paragraph
|
65
|
-
|
65
|
+
assert_greater_than_or_equal_to @subject.paragraph.length, 1
|
66
66
|
end
|
67
67
|
|
68
68
|
def test_paragraphs
|
data/test/test_name_da.rb
CHANGED
@@ -23,18 +23,18 @@ class TestFakerNameDA < Test::Unit::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_any_name
|
26
|
-
|
26
|
+
assert_less_than @tester.any_name.count(' '), 3
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_male_name
|
30
30
|
regexp = /#{@tester::MALE_FIRST_NAMES.join('|')}/
|
31
|
-
|
31
|
+
assert_less_than @tester.male_name.count(' '), 3
|
32
32
|
assert_match(regexp, @tester.male_name)
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_female_name
|
36
36
|
regexp = /#{@tester::FEMALE_FIRST_NAMES.join('|')}/
|
37
|
-
|
37
|
+
assert_less_than @tester.female_name.count(' '), 3
|
38
38
|
assert_match(regexp, @tester.female_name)
|
39
39
|
end
|
40
40
|
|
@@ -33,13 +33,13 @@ class TestPhoneNumberSE < Test::Unit::TestCase
|
|
33
33
|
def test_mobile_phone_number
|
34
34
|
assert_match(ALLOWED_CHARS, FFaker::PhoneNumberSE.mobile_phone_number)
|
35
35
|
assert_match(/\d{3}/, FFaker::PhoneNumberSE.mobile_phone_number)
|
36
|
-
|
36
|
+
assert_greater_than FFaker::PhoneNumberSE.mobile_phone_number.length, 9
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_home_work_phone_number
|
40
40
|
assert_match(ALLOWED_CHARS, FFaker::PhoneNumberSE.home_work_phone_number)
|
41
41
|
assert_match(/\d{1} \d{2}/, FFaker::PhoneNumberSE.home_work_phone_number)
|
42
|
-
|
42
|
+
assert_greater_than FFaker::PhoneNumberSE.mobile_phone_number.length, 9
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_phone_number
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestSportPL < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::SportPL,
|
10
|
+
:name,
|
11
|
+
:summer,
|
12
|
+
:winter
|
13
|
+
)
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@tester = FFaker::SportPL
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_name
|
20
|
+
assert_include(@tester::ALL, @tester.name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_summer
|
24
|
+
assert_include(@tester::SUMMER, @tester.summer)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_winter
|
28
|
+
assert_include(@tester::WINTER, @tester.winter)
|
29
|
+
end
|
30
|
+
end
|
data/test/test_ssn_se.rb
CHANGED
@@ -29,17 +29,15 @@ class TestSSNSE < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_ssn_with_from_to
|
32
|
-
|
33
|
-
|
34
|
-
to = Time.local(2000, 2, 28)
|
32
|
+
from = Time.local(1980, 2, 28)
|
33
|
+
to = Time.local(2000, 2, 28)
|
35
34
|
|
35
|
+
assert_random_between(from, to, exclude_end: true) do
|
36
36
|
ssn = FFaker::SSNSE.ssn(from: from, to: to)
|
37
37
|
year = ssn[0..3].to_i
|
38
38
|
month = ssn[4..5].to_i
|
39
39
|
day = ssn[6..7].to_i
|
40
|
-
|
41
|
-
assert ssn_birth_date < to
|
42
|
-
assert ssn_birth_date >= from
|
40
|
+
Time.local(year, month, day)
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
data/test/test_time.rb
CHANGED
@@ -40,6 +40,18 @@ class TestFakerTime < Test::Unit::TestCase
|
|
40
40
|
assert_deterministic { @tester.datetime(hours: 4, minutes: 20) }
|
41
41
|
end
|
42
42
|
|
43
|
+
def test_datetime_year_range_and_year_latest
|
44
|
+
current_year = ::DateTime.now.year
|
45
|
+
[[0, 0], [1, 1], [2, 4], [8, 6]].each do |year_range, year_latest|
|
46
|
+
assert_random_between(
|
47
|
+
current_year - year_range - year_latest,
|
48
|
+
current_year - year_latest
|
49
|
+
) do
|
50
|
+
@tester.datetime(year_range: year_range, year_latest: year_latest).year
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
43
55
|
def test_month
|
44
56
|
month_regex = /\A(?:January|February|March|April|May|June|July|August|September|October|November|December)\z/
|
45
57
|
assert_match(month_regex, @tester.month)
|
@@ -49,12 +61,7 @@ class TestFakerTime < Test::Unit::TestCase
|
|
49
61
|
from = Time.local(2015, 1, 1)
|
50
62
|
to = Time.local(2016, 1, 1)
|
51
63
|
|
52
|
-
|
53
|
-
random_date = @tester.between(from, to)
|
54
|
-
assert random_date >= from, "Expected >= \"#{from}\", but got #{random_date}"
|
55
|
-
assert random_date <= to, "Expected <= \"#{to}\", but got #{random_date}"
|
56
|
-
assert_deterministic { @tester.between(from, to) }
|
57
|
-
end
|
64
|
+
assert_random_between(from, to) { @tester.between(from, to) }
|
58
65
|
end
|
59
66
|
|
60
67
|
def test_between_for_string
|