ffaker 2.20.0 → 2.25.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 +163 -17
- data/Gemfile +15 -0
- data/README.md +19 -7
- data/REFERENCE.md +1479 -1395
- data/Rakefile +16 -47
- data/bin/console +9 -0
- data/ffaker.gemspec +9 -23
- data/lib/ffaker/address.rb +5 -5
- data/lib/ffaker/address_br.rb +14 -2
- data/lib/ffaker/address_fr.rb +3 -5
- data/lib/ffaker/address_it.rb +1 -5
- data/lib/ffaker/address_ua.rb +1 -1
- data/lib/ffaker/animal_br.rb +12 -0
- data/lib/ffaker/avatar.rb +11 -3
- data/lib/ffaker/bank.rb +13 -1
- data/lib/ffaker/bank_us.rb +37 -0
- data/lib/ffaker/book.rb +15 -7
- data/lib/ffaker/boolean.rb +4 -0
- data/lib/ffaker/cheesy_lingo.rb +2 -2
- data/lib/ffaker/code.rb +1 -1
- data/lib/ffaker/company.rb +5 -8
- data/lib/ffaker/company_fr.rb +2 -2
- data/lib/ffaker/crypto.rb +14 -0
- data/lib/ffaker/data/address_br/complement +3 -0
- data/lib/ffaker/data/address_br/neighborhood_prefixes +3 -0
- data/lib/ffaker/data/address_de/state +1 -0
- data/lib/ffaker/data/animal_br/common_names +423 -0
- data/lib/ffaker/data/jo_jo/first_names +356 -0
- data/lib/ffaker/data/jo_jo/full_names +225 -0
- data/lib/ffaker/data/jo_jo/last_names +153 -0
- data/lib/ffaker/data/jo_jo/stands +149 -0
- data/lib/ffaker/data/job_tw/job_nouns +201 -0
- data/lib/ffaker/data/lorem_tw/words +789 -0
- data/lib/ffaker/date.rb +40 -0
- data/lib/ffaker/filesystem.rb +12 -2
- data/lib/ffaker/geolocation.rb +2 -2
- data/lib/ffaker/guid.rb +7 -1
- data/lib/ffaker/html_ipsum.rb +7 -1
- data/lib/ffaker/identification_br.rb +3 -12
- data/lib/ffaker/identification_ec.rb +39 -0
- data/lib/ffaker/identification_es_cl.rb +2 -2
- data/lib/ffaker/identification_es_co.rb +1 -1
- data/lib/ffaker/identification_fi.rb +73 -0
- data/lib/ffaker/identification_kr.rb +11 -4
- data/lib/ffaker/identification_mx.rb +1 -1
- data/lib/ffaker/identification_pl.rb +6 -6
- data/lib/ffaker/identification_tw.rb +4 -3
- data/lib/ffaker/image.rb +28 -4
- data/lib/ffaker/jo_jo.rb +24 -0
- data/lib/ffaker/job_tw.rb +12 -0
- data/lib/ffaker/lorem_ja.rb +1 -1
- data/lib/ffaker/lorem_ru.rb +1 -1
- data/lib/ffaker/lorem_tw.rb +40 -0
- data/lib/ffaker/movie.rb +1 -1
- data/lib/ffaker/name_fr.rb +4 -3
- data/lib/ffaker/name_pl.rb +3 -3
- data/lib/ffaker/number.rb +6 -2
- data/lib/ffaker/phone_number_de.rb +3 -3
- data/lib/ffaker/skill.rb +1 -1
- data/lib/ffaker/ssn.rb +4 -2
- data/lib/ffaker/ssn_se.rb +2 -2
- data/lib/ffaker/string.rb +7 -7
- data/lib/ffaker/time.rb +4 -4
- data/lib/ffaker/tweet.rb +1 -1
- data/lib/ffaker/utils/module_utils.rb +10 -20
- data/lib/ffaker/utils/unique_utils.rb +34 -21
- data/lib/ffaker/uuid.rb +175 -0
- data/lib/ffaker/vehicle.rb +63 -1
- data/lib/{version.rb → ffaker/version.rb} +1 -1
- data/lib/ffaker.rb +64 -190
- data/scripts/reference.rb +21 -21
- data/test/helper.rb +7 -9
- data/test/test_address_br.rb +15 -2
- data/test/test_address_da.rb +3 -3
- data/test/test_address_fi.rb +2 -2
- data/test/test_address_se.rb +2 -2
- data/test/test_address_ua.rb +1 -1
- data/test/test_animal_br.rb +17 -0
- data/test/test_array_utils.rb +1 -1
- data/test/test_avatar.rb +30 -7
- data/test/test_bank.rb +15 -1
- data/test/test_bank_us.rb +37 -0
- data/test/test_book.rb +29 -0
- data/test/test_boolean.rb +32 -1
- data/test/test_cheesy_lingo.rb +1 -1
- data/test/test_color.rb +3 -3
- data/test/test_crypto.rb +15 -0
- data/test/test_date.rb +47 -0
- data/test/test_filesystem.rb +30 -4
- data/test/test_freedom_ipsum.rb +1 -1
- data/test/test_gender_it.rb +1 -1
- data/test/test_gender_ja.rb +1 -1
- data/test/test_gender_jp.rb +1 -1
- data/test/test_gender_pl.rb +1 -1
- data/test/test_guid.rb +1 -1
- data/test/test_healthcare_ru.rb +1 -1
- data/test/test_hipster_ipsum.rb +1 -1
- data/test/test_html_ipsum.rb +6 -0
- data/test/test_identification.rb +12 -2
- data/test/test_identification_ec.rb +33 -0
- data/test/test_identification_es_mx.rb +3 -1
- data/test/test_identification_fi.rb +39 -0
- data/test/test_identification_it.rb +12 -1
- data/test/test_identification_kr.rb +3 -3
- data/test/test_image.rb +51 -5
- data/test/test_internet.rb +3 -1
- data/test/test_internet_se.rb +5 -2
- data/test/test_jo_jo.rb +29 -0
- data/test/test_job_tw.rb +21 -0
- data/test/test_lorem_br.rb +3 -3
- data/test/test_lorem_cn.rb +3 -3
- data/test/test_lorem_fr.rb +3 -3
- data/test/test_lorem_ie.rb +2 -2
- data/test/test_lorem_kr.rb +3 -3
- data/test/test_lorem_pl.rb +2 -2
- data/test/test_lorem_ru.rb +3 -3
- data/test/test_lorem_tw.rb +54 -0
- data/test/test_lorem_ua.rb +3 -3
- data/test/test_module_utils.rb +42 -0
- data/test/test_music.rb +4 -4
- data/test/test_name_da.rb +1 -1
- data/test/test_name_ph.rb +1 -1
- data/test/test_name_ru.rb +2 -2
- data/test/test_name_ua.rb +2 -2
- data/test/test_number.rb +14 -2
- data/test/test_phone_number_nl.rb +1 -1
- data/test/test_phone_number_se.rb +1 -1
- data/test/test_phone_number_sg.rb +8 -8
- data/test/test_ssn_se.rb +1 -1
- data/test/test_unique_utils.rb +29 -5
- data/test/test_units.rb +6 -6
- data/test/test_units_english.rb +15 -15
- data/test/test_units_metric.rb +15 -15
- data/test/test_uuid.rb +73 -0
- data/test/test_vehicle.rb +27 -1
- metadata +41 -245
data/test/test_book.rb
CHANGED
@@ -39,6 +39,35 @@ class TestBook < Test::Unit::TestCase
|
|
39
39
|
@tester.cover)
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_cover_with_format
|
43
|
+
assert_match(%r{\Ahttps://robohash\.org/.+\.jpg\?size=300x300\z},
|
44
|
+
@tester.cover(format: 'jpg'))
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_cover_output_with_keyword_arguments
|
48
|
+
output = capture_output do
|
49
|
+
@tester.cover(format: 'jpg')
|
50
|
+
end
|
51
|
+
|
52
|
+
assert_equal ['', ''], output
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_cover_with_slug_as_positional_argument
|
56
|
+
assert_match(%r{\Ahttps://robohash\.org/foobar\.png\?size=300x300\z},
|
57
|
+
@tester.cover('foobar'))
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_cover_output_with_positional_arguments
|
61
|
+
output = capture_output do
|
62
|
+
@tester.cover('foobar')
|
63
|
+
end
|
64
|
+
|
65
|
+
assert_equal(
|
66
|
+
['', "Positional arguments for Book#cover are deprecated. Please use keyword arguments.\n"],
|
67
|
+
output
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
42
71
|
def test_orly_cover
|
43
72
|
assert_match(%r{\Ahttps://orly-appstore\.herokuapp\.com/generate},
|
44
73
|
@tester.orly_cover)
|
data/test/test_boolean.rb
CHANGED
@@ -5,10 +5,41 @@ require_relative 'helper'
|
|
5
5
|
class TestBoolean < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(FFaker::Boolean, :maybe)
|
8
|
+
assert_methods_are_deterministic(FFaker::Boolean, :maybe, :boolean)
|
9
9
|
|
10
10
|
def test_maybe
|
11
11
|
maybe = FFaker::Boolean.maybe
|
12
12
|
assert [true, false].include?(maybe)
|
13
13
|
end
|
14
|
+
|
15
|
+
def test_boolean_with_default_ratio
|
16
|
+
true_count = 0
|
17
|
+
1000.times do
|
18
|
+
true_count += 1 if FFaker::Boolean.boolean
|
19
|
+
end
|
20
|
+
assert_in_delta 0.5, true_count / 1000.0, 0.1
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_boolean_with_true_ratio
|
24
|
+
true_ratio = 0.8
|
25
|
+
true_count = 0
|
26
|
+
1000.times do
|
27
|
+
true_count += 1 if FFaker::Boolean.boolean(true_ratio: true_ratio)
|
28
|
+
end
|
29
|
+
assert_in_delta true_ratio, true_count / 1000.0, 0.1
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_boolean_with_true_ratio_zero
|
33
|
+
true_ratio = 0
|
34
|
+
100.times do
|
35
|
+
assert_equal false, FFaker::Boolean.boolean(true_ratio: true_ratio)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_boolean_with_true_ratio_one
|
40
|
+
true_ratio = 1
|
41
|
+
100.times do
|
42
|
+
assert_equal true, FFaker::Boolean.boolean(true_ratio: true_ratio)
|
43
|
+
end
|
44
|
+
end
|
14
45
|
end
|
data/test/test_cheesy_lingo.rb
CHANGED
data/test/test_color.rb
CHANGED
@@ -5,9 +5,9 @@ require_relative 'helper'
|
|
5
5
|
class TestColor < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
VALID_RGB_REGEX = /\A([0-9]{1,3})\z
|
9
|
-
VALID_OPACITY_REGEX = /^([0-9].[0-9]{1,2})
|
10
|
-
VALID_PERCENTAGE_REGEX = /^([0-9]{1,3}%)
|
8
|
+
VALID_RGB_REGEX = /\A([0-9]{1,3})\z/
|
9
|
+
VALID_OPACITY_REGEX = /^([0-9].[0-9]{1,2})$/
|
10
|
+
VALID_PERCENTAGE_REGEX = /^([0-9]{1,3}%)$/
|
11
11
|
|
12
12
|
assert_methods_are_deterministic(
|
13
13
|
FFaker::Color,
|
data/test/test_crypto.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestCrypto < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::Crypto, :sha256)
|
9
|
+
|
10
|
+
def test_sha256
|
11
|
+
assert FFaker::Crypto.sha256.is_a?(String)
|
12
|
+
assert FFaker::Crypto.sha256.length == 64
|
13
|
+
assert_match(/\A[a-z\d]{64}\z/, FFaker::Crypto.sha256)
|
14
|
+
end
|
15
|
+
end
|
data/test/test_date.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestFakerDate < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@tester = FFaker::Date
|
10
|
+
end
|
11
|
+
|
12
|
+
assert_methods_are_deterministic(FFaker::Date, :backward, :forward, :birthday)
|
13
|
+
|
14
|
+
def test_between
|
15
|
+
from = Date.new(2015, 1, 1)
|
16
|
+
to = Date.new(2016, 12, 31)
|
17
|
+
|
18
|
+
assert_random_between(from..to) { @tester.between(from, to) }
|
19
|
+
assert_instance_of Date, @tester.between(from, to)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_backward
|
23
|
+
today = Date.today
|
24
|
+
|
25
|
+
assert_random_between((today - 365)..(today - 1)) { @tester.backward }
|
26
|
+
assert_random_between((today - 30)..(today - 1)) { @tester.backward(30) }
|
27
|
+
assert_instance_of Date, @tester.backward
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_forward
|
31
|
+
today = Date.today
|
32
|
+
|
33
|
+
assert_random_between((today + 1)..(today + 365)) { @tester.forward }
|
34
|
+
assert_random_between((today + 1)..(today + 30)) { @tester.forward(30) }
|
35
|
+
assert_instance_of Date, @tester.forward
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_birthday
|
39
|
+
today = Date.today
|
40
|
+
|
41
|
+
assert_random_between(today.prev_year(65).next_day..today.prev_year(18)) { @tester.birthday }
|
42
|
+
assert_random_between(today.prev_year(43).next_day..today.prev_year(42)) do
|
43
|
+
@tester.birthday(min_age: 42, max_age: 42)
|
44
|
+
end
|
45
|
+
assert_instance_of Date, @tester.birthday
|
46
|
+
end
|
47
|
+
end
|
data/test/test_filesystem.rb
CHANGED
@@ -15,10 +15,10 @@ class TestFakerFilesystem < Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_extension
|
18
|
-
assert_match
|
18
|
+
assert_match(/\A(?:flac|mp3|wav|bmp|gif|jpeg|jpg|png|tiff|css|csv|html|js|
|
19
19
|
json|txt|mp4|avi|mov|webm|doc|docx|xls|xlsx|ppt|pptx|odt|
|
20
20
|
ods|odp|pages|numbers|key|pdf)\z/x,
|
21
|
-
@tester.extension
|
21
|
+
@tester.extension)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_mime_type_format
|
@@ -30,7 +30,33 @@ class TestFakerFilesystem < Test::Unit::TestCase
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_file_name
|
33
|
-
assert_match %r{\A(?:[a-z_-]+[\\/])+[a-z_-]+\.\w{2,4}\z},
|
34
|
-
|
33
|
+
assert_match %r{\A(?:[a-z_-]+[\\/])+[a-z_-]+\.\w{2,4}\z}, @tester.file_name
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_file_name_with_extension
|
37
|
+
assert_match %r{\A(?:[a-z_-]+[\\/])+[a-z_-]+\.rb\z}, @tester.file_name(ext: 'rb')
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_file_name_output_with_keyword_arguments
|
41
|
+
output = capture_output do
|
42
|
+
@tester.file_name(ext: 'rb')
|
43
|
+
end
|
44
|
+
|
45
|
+
assert_equal ['', ''], output
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_file_name_with_directory_as_positional_argument
|
49
|
+
assert_match %r{\Asome_directory/[a-z_-]+\.\w{2,4}\z}, @tester.file_name('some_directory')
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_file_name_output_with_positional_arguments
|
53
|
+
output = capture_output do
|
54
|
+
@tester.file_name('some_directory')
|
55
|
+
end
|
56
|
+
|
57
|
+
assert_equal(
|
58
|
+
['', "Positional arguments for Filesystem#file_name are deprecated. Please use keyword arguments.\n"],
|
59
|
+
output
|
60
|
+
)
|
35
61
|
end
|
36
62
|
end
|
data/test/test_freedom_ipsum.rb
CHANGED
data/test/test_gender_it.rb
CHANGED
data/test/test_gender_ja.rb
CHANGED
data/test/test_gender_jp.rb
CHANGED
data/test/test_gender_pl.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'helper'
|
|
5
5
|
class TestFakerGenderPL < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
GENDER_REGEX = /\A(kobieta|mężczyzna)\z
|
8
|
+
GENDER_REGEX = /\A(kobieta|mężczyzna)\z/
|
9
9
|
|
10
10
|
assert_methods_are_deterministic(FFaker::GenderPL, :random)
|
11
11
|
|
data/test/test_guid.rb
CHANGED
@@ -8,7 +8,7 @@ class TestGuid < Test::Unit::TestCase
|
|
8
8
|
assert_methods_are_deterministic(FFaker::Guid, :guid)
|
9
9
|
|
10
10
|
def test_guid
|
11
|
-
assert_match(
|
11
|
+
assert_match(/\A[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}\z/,
|
12
12
|
FFaker::Guid.guid)
|
13
13
|
end
|
14
14
|
end
|
data/test/test_healthcare_ru.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'helper'
|
|
5
5
|
class TestHealthcareRU < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
SPECIALIZATION_REGEX = /\A[А-Яа-я\ ()
|
8
|
+
SPECIALIZATION_REGEX = /\A[А-Яа-я\ ()-]+\z/
|
9
9
|
|
10
10
|
assert_methods_are_deterministic(FFaker::HealthcareRU, :doctor_specialization)
|
11
11
|
|
data/test/test_hipster_ipsum.rb
CHANGED
@@ -10,7 +10,7 @@ class TestHipsterIpsum < Test::Unit::TestCase
|
|
10
10
|
:paragraph, :paragraphs, :sentence, :sentences, :word, :words
|
11
11
|
)
|
12
12
|
|
13
|
-
TEST_REGEX = /\+1|[ a-z]+/i
|
13
|
+
TEST_REGEX = /\+1|[ a-z]+/i
|
14
14
|
|
15
15
|
def test_paragraph
|
16
16
|
assert_match(TEST_REGEX, FFaker::HipsterIpsum.paragraph)
|
data/test/test_html_ipsum.rb
CHANGED
@@ -90,6 +90,12 @@ class TestHTMLIpsum < Test::Unit::TestCase
|
|
90
90
|
assert FFaker::HTMLIpsum.fancy_string.length > 1, 'the string is longer than one char'
|
91
91
|
end
|
92
92
|
|
93
|
+
def test_fancy_string_tags
|
94
|
+
# It returns a string with at least one HTML tag
|
95
|
+
assert_match(%r{(<.*>[\w\s]+</\w+>){1}}i, FFaker::HTMLIpsum.fancy_string(1))
|
96
|
+
assert_match(%r{(<.*>[\w\s]+</\w+>){1}}i, FFaker::HTMLIpsum.fancy_string(3))
|
97
|
+
end
|
98
|
+
|
93
99
|
def test_fancy_string_breaks
|
94
100
|
# We can't reliably predict what's going to end up inside, so just ensure
|
95
101
|
# that we have a complete string.
|
data/test/test_identification.rb
CHANGED
@@ -15,7 +15,6 @@ class TestFakerIdentification < Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_drivers_license
|
18
|
-
###-###-##-###-#
|
19
18
|
drivers_license_regex = /\A[A-Z]\d{3}-\d{3}-\d{2}-\d{3}-\d{1}\z/
|
20
19
|
assert_match(drivers_license_regex, @tester.drivers_license)
|
21
20
|
end
|
@@ -29,7 +28,18 @@ class TestFakerIdentification < Test::Unit::TestCase
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def test_ethnicity
|
32
|
-
ethnicity_regex = %r{
|
31
|
+
ethnicity_regex = %r{
|
32
|
+
\A(
|
33
|
+
African\ American|
|
34
|
+
Asian/Pacific\ Islander|
|
35
|
+
Caucasian|
|
36
|
+
Hispanic|
|
37
|
+
Native\ American|
|
38
|
+
Multiracial|
|
39
|
+
Other|
|
40
|
+
Prefer\ not\ to\ respond
|
41
|
+
)\z
|
42
|
+
}x
|
33
43
|
assert_match(ethnicity_regex, @tester.ethnicity)
|
34
44
|
end
|
35
45
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestIdentificationEC < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::IdentificationEC, :ci)
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@tester = FFaker::IdentificationEC
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_ci
|
15
|
+
assert_match(/^[0-9]{10}$/, @tester.ci)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_last_digit
|
19
|
+
ci = @tester.ci
|
20
|
+
sum = 0
|
21
|
+
ci[0..8].chars.each_with_index do |char, index|
|
22
|
+
if index.even?
|
23
|
+
multiple = char.to_i * 2
|
24
|
+
sum += multiple > 9 ? multiple - 9 : multiple
|
25
|
+
else
|
26
|
+
sum += char.to_i
|
27
|
+
end
|
28
|
+
end
|
29
|
+
mod = sum % 10
|
30
|
+
mod = 10 - mod if mod.positive?
|
31
|
+
assert(ci[9].to_i == mod)
|
32
|
+
end
|
33
|
+
end
|
@@ -22,7 +22,9 @@ class TestIdentificationMX < Test::Unit::TestCase
|
|
22
22
|
|
23
23
|
def test_curp
|
24
24
|
or_curp_states_abbr = FFaker::IdentificationMX::ESTADOS_CURP.join('|')
|
25
|
-
re =
|
25
|
+
re = /
|
26
|
+
\A[a-z][aeioux][a-z]{2}\d{2}[0-1]\d[0-3]\d[hm](?:#{or_curp_states_abbr})[bcdfghjklmñpqrstvwxyz]{3}[0-9a-z]\d\z
|
27
|
+
/uix
|
26
28
|
assert_match(re, FFaker::IdentificationMX.curp)
|
27
29
|
end
|
28
30
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestFakerIdentificationFI < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::IdentificationFI,
|
10
|
+
:identity_number
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::IdentificationFI
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_identity_number
|
18
|
+
general_regex = /^(0[1-9]|[1-2]\d|3[01])(0[1-9]|1[0-2])(\d\d)([-+A-FU-Y])(\d\d\d)([0-9A-FHJ-NPR-Y])$/
|
19
|
+
assert_match(general_regex, @tester.identity_number)
|
20
|
+
random_far_past_date = rand(Date.civil(1700)..Date.civil(1800))
|
21
|
+
assert_raises ArgumentError do
|
22
|
+
@tester.identity_number(birthday: random_far_past_date)
|
23
|
+
end
|
24
|
+
random_far_future_date = rand(Date.civil(2100)..Date.civil(2200))
|
25
|
+
assert_raises ArgumentError do
|
26
|
+
@tester.identity_number(birthday: random_far_future_date)
|
27
|
+
end
|
28
|
+
date_match_regex = /^010100A(\d\d\d)([0-9A-FHJ-NPR-Y])$/
|
29
|
+
assert_match(date_match_regex, @tester.identity_number(birthday: Date.civil(2000, 1, 1)))
|
30
|
+
fake_number_match_regex = /^(0[1-9]|[1-2]\d|3[01])(0[1-9]|1[0-2])(\d\d)([-+A-FU-Y])9(\d\d)([0-9A-FHJ-NPR-Y])$/
|
31
|
+
assert_match(fake_number_match_regex, @tester.identity_number(fake: true))
|
32
|
+
real_number_match_regex = /^(0[1-9]|[1-2]\d|3[01])(0[1-9]|1[0-2])(\d\d)([-+A-FU-Y])([0-8])(\d\d)([0-9A-FHJ-NPR-Y])$/
|
33
|
+
assert_match(real_number_match_regex, @tester.identity_number(fake: false))
|
34
|
+
female_match_regex = /^(0[1-9]|[1-2]\d|3[01])(0[1-9]|1[0-2])(\d\d)([-+A-FU-Y])(\d\d)([02468])([0-9A-FHJ-NPR-Y])$/
|
35
|
+
assert_match(female_match_regex, @tester.identity_number(gender: 'female'))
|
36
|
+
male_match_regex = /^(0[1-9]|[1-2]\d|3[01])(0[1-9]|1[0-2])(\d\d)([-+A-FU-Y])(\d\d)([13579])([0-9A-FHJ-NPR-Y])$/
|
37
|
+
assert_match(male_match_regex, @tester.identity_number(gender: 'male'))
|
38
|
+
end
|
39
|
+
end
|
@@ -28,7 +28,18 @@ class TestFakerIdentificationIT < Test::Unit::TestCase
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_ethnicity
|
31
|
-
ethnicity_regex = %r{
|
31
|
+
ethnicity_regex = %r{
|
32
|
+
\A(
|
33
|
+
Afroamericano|
|
34
|
+
Asiatico/isolano\ del\ Pacifico|
|
35
|
+
Caucasico|
|
36
|
+
Ispanico|
|
37
|
+
Nativo\ americano|
|
38
|
+
Multirazziale|
|
39
|
+
Altro|
|
40
|
+
Preferisco\ non\ rispondere
|
41
|
+
)\z
|
42
|
+
}x
|
32
43
|
assert_match(ethnicity_regex, @tester.ethnicity)
|
33
44
|
end
|
34
45
|
end
|
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
require_relative 'helper'
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestFakerIdentificationKR < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(FFaker::
|
8
|
+
assert_methods_are_deterministic(FFaker::IdentificationKR, :rrn)
|
9
9
|
|
10
10
|
def setup
|
11
|
-
@tester = FFaker::
|
11
|
+
@tester = FFaker::IdentificationKR
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_rrn
|
data/test/test_image.rb
CHANGED
@@ -18,34 +18,80 @@ class TestImage < Test::Unit::TestCase
|
|
18
18
|
@tester.url)
|
19
19
|
end
|
20
20
|
|
21
|
+
def test_url_output_with_keyword_arguments
|
22
|
+
output = capture_output do
|
23
|
+
@tester.url(format: 'jpg')
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_equal ['', ''], output
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_url_with_size_as_positional_argument
|
30
|
+
assert_match(%r(#{Regexp.quote(PLACEHOLDER)}150x320/[0-9a-f]{6}/[0-9a-f]{6}\.png\?text=), @tester.url('150x320'))
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_url_output_with_positional_arguments
|
34
|
+
output = capture_output do
|
35
|
+
@tester.url('150x320')
|
36
|
+
end
|
37
|
+
|
38
|
+
assert_equal(
|
39
|
+
['', "Positional arguments for Image#url are deprecated. Please use keyword arguments.\n"],
|
40
|
+
output
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
21
44
|
def test_image_url_with_param
|
22
45
|
assert_equal("#{PLACEHOLDER}300x300//.png?text=",
|
23
|
-
@tester.url('300x300', 'png', nil, nil))
|
46
|
+
@tester.url(size: '300x300', format: 'png', bg_color: nil, text_color: nil))
|
24
47
|
end
|
25
48
|
|
26
49
|
def test_image_url_with_correct_size
|
27
50
|
assert_match(%r(#{Regexp.quote(PLACEHOLDER)}150x320/[0-9a-f]{6}/[0-9a-f]{6}\.png\?text=),
|
28
|
-
@tester.url('150x320'))
|
51
|
+
@tester.url(size: '150x320'))
|
29
52
|
end
|
30
53
|
|
31
54
|
def test_image_url_with_incorrect_size
|
32
55
|
assert_raise ArgumentError do
|
33
|
-
@tester.url('150x320z')
|
56
|
+
@tester.url(size: '150x320z')
|
34
57
|
end
|
35
58
|
end
|
36
59
|
|
37
60
|
def test_image_url_with_supported_format
|
38
61
|
assert_match(%r(#{Regexp.quote(PLACEHOLDER)}300x300/[0-9a-f]{6}/[0-9a-f]{6}\.jpg\?text=),
|
39
|
-
@tester.url('300x300', 'jpg'))
|
62
|
+
@tester.url(size: '300x300', format: 'jpg'))
|
40
63
|
end
|
41
64
|
|
42
65
|
def test_image_url_with_incorrect_format
|
43
66
|
assert_raise ArgumentError do
|
44
|
-
@tester.url('300x300', 'wrong_format')
|
67
|
+
@tester.url(size: '300x300', format: 'wrong_format')
|
45
68
|
end
|
46
69
|
end
|
47
70
|
|
48
71
|
def test_image_file
|
49
72
|
assert_equal(@tester.file.class.name, 'File')
|
50
73
|
end
|
74
|
+
|
75
|
+
def test_file_output_with_keyword_arguments
|
76
|
+
output = capture_output do
|
77
|
+
@tester.file(format: 'jpg')
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_equal ['', ''], output
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_file_with_size_as_positional_argument
|
84
|
+
assert_equal(@tester.file('150x320').class.name, 'File')
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_file_output_with_positional_arguments
|
88
|
+
output = capture_output do
|
89
|
+
@tester.file('150x320')
|
90
|
+
end
|
91
|
+
|
92
|
+
assert_equal(
|
93
|
+
['', "Positional arguments for Image#file are deprecated. Please use keyword arguments.\n"],
|
94
|
+
output
|
95
|
+
)
|
96
|
+
end
|
51
97
|
end
|
data/test/test_internet.rb
CHANGED
@@ -29,7 +29,9 @@ class TestFakerInternet < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_disposable_email
|
32
|
-
assert @tester.disposable_email.match(
|
32
|
+
assert @tester.disposable_email.match(
|
33
|
+
/.+@(mailinator\.com|suremail\.info|spamherelots\.com|binkmail\.com|safetymail\.info)/
|
34
|
+
)
|
33
35
|
end
|
34
36
|
|
35
37
|
def test_safe_email
|
data/test/test_internet_se.rb
CHANGED
@@ -25,12 +25,15 @@ class TestFakerInternetSE < Test::Unit::TestCase
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_disposable_email
|
28
|
-
assert @tester.disposable_email.match(
|
28
|
+
assert @tester.disposable_email.match(
|
29
|
+
/.+@(mailinator\.com|suremail\.info|spamherelots\.com|binkmail\.com|safetymail\.info)/
|
30
|
+
)
|
29
31
|
end
|
30
32
|
|
31
33
|
def test_free_email
|
32
34
|
email = @tester.free_email
|
33
|
-
assert email.match(/.+@(gmail\.com|hotmail\.com|yahoo\.com|spray\.se|passagen\.se)/),
|
35
|
+
assert email.match(/.+@(gmail\.com|hotmail\.com|yahoo\.com|spray\.se|passagen\.se)/),
|
36
|
+
"mail: #{email} does not match"
|
34
37
|
end
|
35
38
|
|
36
39
|
def test_login_user_name
|
data/test/test_jo_jo.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestJoJo < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::JoJo, :full_name, :first_name, :last_name, :stand)
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@tester = FFaker::JoJo
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_full_name
|
15
|
+
assert_include @tester::FULL_NAMES, @tester.full_name
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_first_name
|
19
|
+
assert_include @tester::FIRST_NAMES, @tester.first_name
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_last_name
|
23
|
+
assert_include @tester::LAST_NAMES, @tester.last_name
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_stand
|
27
|
+
assert_include @tester::STANDS, @tester.stand
|
28
|
+
end
|
29
|
+
end
|
data/test/test_job_tw.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestFakerJobTW < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::JobTW, :title)
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@tester = FFaker::JobTW
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_title
|
15
|
+
assert_greater_than_or_equal_to @tester.title.length, 1
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_nouns
|
19
|
+
assert_kind_of Array, @tester::JOB_NOUNS
|
20
|
+
end
|
21
|
+
end
|
data/test/test_lorem_br.rb
CHANGED
@@ -10,9 +10,9 @@ class TestLoremBR < Test::Unit::TestCase
|
|
10
10
|
:paragraph, :sentence, :phrase, :paragraphs, :sentences, :phrases, :words, :word, :characters
|
11
11
|
)
|
12
12
|
|
13
|
-
CHARACTERS = /\A[A-zÀ-ü0-9]+\z/i
|
14
|
-
WORD = /\A[A-zÀ-ü-]+\z/i
|
15
|
-
WORDS = /[ A-z
|
13
|
+
CHARACTERS = /\A[A-Za-zÀ-ü0-9]+\z/i
|
14
|
+
WORD = /\A[A-Za-zÀ-ü-]+\z/i
|
15
|
+
WORDS = /[ A-Za-zÀ-ü\-.]+/i
|
16
16
|
|
17
17
|
def test_paragraph
|
18
18
|
assert_match(WORDS, FFaker::LoremBR.paragraph)
|
data/test/test_lorem_cn.rb
CHANGED
@@ -27,7 +27,7 @@ class TestLoremCN < Test::Unit::TestCase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_paragraphs_is_an_array
|
30
|
-
assert FFaker::LoremCN.paragraphs.
|
30
|
+
assert FFaker::LoremCN.paragraphs.instance_of?(Array)
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_sentences
|
@@ -35,12 +35,12 @@ class TestLoremCN < Test::Unit::TestCase
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_sentences_is_an_array
|
38
|
-
assert FFaker::LoremCN.sentences.
|
38
|
+
assert FFaker::LoremCN.sentences.instance_of?(Array)
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_sentences_via_to_s_produces_string_terminated_with_period
|
42
42
|
string = FFaker::LoremCN.sentences.to_s
|
43
|
-
assert string.
|
43
|
+
assert string.instance_of?(String)
|
44
44
|
assert string =~ /。$/
|
45
45
|
end
|
46
46
|
|