ffaker 2.12.0 → 2.13.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 +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
|