ffaker 2.6.0 → 2.7.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 +5 -0
- data/README.md +8 -0
- data/REFERENCE.md +21 -1
- data/Rakefile +1 -1
- data/ffaker.gemspec +6 -6
- data/lib/ffaker.rb +2 -2
- data/lib/ffaker/address.rb +9 -9
- data/lib/ffaker/address_au.rb +2 -2
- data/lib/ffaker/address_br.rb +2 -2
- data/lib/ffaker/address_ca.rb +2 -2
- data/lib/ffaker/address_da.rb +2 -2
- data/lib/ffaker/address_de.rb +2 -2
- data/lib/ffaker/address_fi.rb +1 -2
- data/lib/ffaker/address_fr.rb +1 -1
- data/lib/ffaker/address_gr.rb +2 -2
- data/lib/ffaker/address_id.rb +1 -1
- data/lib/ffaker/address_in.rb +3 -5
- data/lib/ffaker/address_kr.rb +9 -8
- data/lib/ffaker/address_mx.rb +2 -2
- data/lib/ffaker/address_nl.rb +1 -1
- data/lib/ffaker/address_pl.rb +5 -5
- data/lib/ffaker/address_ru.rb +1 -1
- data/lib/ffaker/address_ua.rb +3 -3
- data/lib/ffaker/address_us.rb +2 -2
- data/lib/ffaker/avatar.rb +1 -1
- data/lib/ffaker/book.rb +2 -2
- data/lib/ffaker/boolean.rb +1 -1
- data/lib/ffaker/cheesy_lingo.rb +2 -2
- data/lib/ffaker/color.rb +2 -2
- data/lib/ffaker/company.rb +6 -6
- data/lib/ffaker/company_cn.rb +2 -2
- data/lib/ffaker/company_it.rb +18 -2
- data/lib/ffaker/company_se.rb +4 -4
- data/lib/ffaker/data/company_it/piva_office_codes +99 -0
- data/lib/ffaker/education.rb +8 -8
- data/lib/ffaker/filesystem.rb +3 -3
- data/lib/ffaker/food.rb +1 -1
- data/lib/ffaker/gender.rb +1 -1
- data/lib/ffaker/gender_br.rb +1 -1
- data/lib/ffaker/gender_cn.rb +1 -1
- data/lib/ffaker/gender_id.rb +1 -1
- data/lib/ffaker/gender_kr.rb +1 -1
- data/lib/ffaker/html_ipsum.rb +4 -4
- data/lib/ffaker/identification.rb +1 -1
- data/lib/ffaker/identification_br.rb +1 -1
- data/lib/ffaker/identification_es.rb +1 -1
- data/lib/ffaker/identification_es_cl.rb +2 -2
- data/lib/ffaker/identification_es_co.rb +5 -5
- data/lib/ffaker/identification_mx.rb +4 -4
- data/lib/ffaker/internet.rb +9 -9
- data/lib/ffaker/internet_se.rb +6 -8
- data/lib/ffaker/job_fr.rb +2 -2
- data/lib/ffaker/lorem.rb +2 -2
- data/lib/ffaker/lorem_ar.rb +2 -2
- data/lib/ffaker/lorem_cn.rb +2 -2
- data/lib/ffaker/lorem_fr.rb +2 -2
- data/lib/ffaker/lorem_kr.rb +2 -2
- data/lib/ffaker/lorem_ru.rb +2 -2
- data/lib/ffaker/lorem_ua.rb +3 -3
- data/lib/ffaker/movie.rb +7 -7
- data/lib/ffaker/name.rb +4 -11
- data/lib/ffaker/name_br.rb +2 -2
- data/lib/ffaker/name_cs.rb +13 -11
- data/lib/ffaker/name_da.rb +3 -3
- data/lib/ffaker/name_de.rb +2 -2
- data/lib/ffaker/name_fr.rb +2 -4
- data/lib/ffaker/name_ga.rb +3 -10
- data/lib/ffaker/name_gr.rb +3 -3
- data/lib/ffaker/name_id.rb +2 -2
- data/lib/ffaker/name_it.rb +3 -6
- data/lib/ffaker/name_mx.rb +8 -8
- data/lib/ffaker/name_nb.rb +3 -4
- data/lib/ffaker/name_nl.rb +5 -5
- data/lib/ffaker/name_ph.rb +4 -6
- data/lib/ffaker/name_pl.rb +4 -4
- data/lib/ffaker/name_ru.rb +14 -12
- data/lib/ffaker/name_se.rb +3 -4
- data/lib/ffaker/name_sn.rb +13 -19
- data/lib/ffaker/name_ua.rb +1 -1
- data/lib/ffaker/nato_alphabet.rb +2 -2
- data/lib/ffaker/phone_number.rb +16 -16
- data/lib/ffaker/phone_number_au.rb +7 -7
- data/lib/ffaker/phone_number_br.rb +7 -7
- data/lib/ffaker/phone_number_ch.rb +7 -7
- data/lib/ffaker/phone_number_cu.rb +10 -10
- data/lib/ffaker/phone_number_de.rb +2 -2
- data/lib/ffaker/phone_number_fr.rb +4 -4
- data/lib/ffaker/phone_number_id.rb +1 -1
- data/lib/ffaker/phone_number_kr.rb +4 -4
- data/lib/ffaker/phone_number_mx.rb +2 -2
- data/lib/ffaker/phone_number_nl.rb +3 -3
- data/lib/ffaker/phone_number_se.rb +3 -3
- data/lib/ffaker/phone_number_sg.rb +1 -1
- data/lib/ffaker/phone_number_sn.rb +5 -5
- data/lib/ffaker/product.rb +9 -9
- data/lib/ffaker/ssn_se.rb +4 -4
- data/lib/ffaker/string.rb +3 -3
- data/lib/ffaker/time.rb +6 -1
- data/lib/ffaker/utils/module_utils.rb +5 -0
- data/lib/ffaker/utils/unique_utils.rb +45 -0
- data/lib/ffaker/vehicle.rb +5 -5
- data/scripts/reference.rb +1 -1
- data/test/test_address_gr.rb +5 -5
- data/test/test_address_ja.rb +2 -1
- data/test/test_address_kr.rb +1 -0
- data/test/test_array_utils.rb +3 -3
- data/test/test_color.rb +1 -1
- data/test/test_company_it.rb +5 -1
- data/test/test_identification_es_mx.rb +1 -1
- data/test/test_module_utils.rb +1 -1
- data/test/test_name_ar.rb +4 -6
- data/test/test_name_cs.rb +2 -2
- data/test/test_name_ja.rb +2 -2
- data/test/test_name_ru.rb +2 -2
- data/test/test_phone_number.rb +2 -2
- data/test/test_string.rb +1 -1
- data/test/test_time.rb +9 -1
- data/test/test_unique_utils.rb +54 -0
- metadata +6 -2
data/lib/ffaker/ssn_se.rb
CHANGED
@@ -23,7 +23,7 @@ module FFaker
|
|
23
23
|
extend ModuleUtils
|
24
24
|
extend self
|
25
25
|
|
26
|
-
GENDERS = %w
|
26
|
+
GENDERS = %w[female male].freeze
|
27
27
|
|
28
28
|
def ssn(opts = {})
|
29
29
|
from = opts[:from] || ::Time.local(1940, 1, 1)
|
@@ -66,15 +66,15 @@ module FFaker
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def get_random_region_even
|
69
|
-
rand(
|
69
|
+
rand(0..498) * 2
|
70
70
|
end
|
71
71
|
|
72
72
|
def get_random_region_odd
|
73
|
-
rand(
|
73
|
+
rand(0..498) * 2 + 1
|
74
74
|
end
|
75
75
|
|
76
76
|
def three_character_string(number)
|
77
|
-
'%03d'
|
77
|
+
format('%03d', number)
|
78
78
|
end
|
79
79
|
|
80
80
|
# http://en.wikipedia.org/wiki/Luhn_algorithm
|
data/lib/ffaker/string.rb
CHANGED
@@ -54,11 +54,11 @@ module FFaker
|
|
54
54
|
# TODO: Let ? generate nothing
|
55
55
|
'' # We already printed its target
|
56
56
|
when '+' then
|
57
|
-
tokens.unshift(token) if rand(
|
57
|
+
tokens.unshift(token) if rand(0..1) == 1 # Leave the `+` on to run again
|
58
58
|
process_token(@last_token) # Run the last one at least once
|
59
59
|
when '*' then
|
60
|
-
tokens.unshift(token) if rand(
|
61
|
-
return '' if rand(
|
60
|
+
tokens.unshift(token) if rand(0..1) == 1 # Leave the `*` on to run again
|
61
|
+
return '' if rand(0..1) == 1 # Or maybe do nothing
|
62
62
|
process_token(@last_token) # Else run the last one again
|
63
63
|
when '{' then
|
64
64
|
number = ''
|
data/lib/ffaker/time.rb
CHANGED
@@ -5,12 +5,17 @@ module FFaker
|
|
5
5
|
extend ModuleUtils
|
6
6
|
extend self
|
7
7
|
|
8
|
-
MONTHS = %w
|
8
|
+
MONTHS = %w[January February March April May June July August September October November December].freeze
|
9
|
+
DAYS_OF_WEEK = %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday].freeze
|
9
10
|
|
10
11
|
def month
|
11
12
|
fetch_sample(MONTHS)
|
12
13
|
end
|
13
14
|
|
15
|
+
def day_of_week(options = {})
|
16
|
+
fetch_sample(DAYS_OF_WEEK)[0..(options[:long] ? 10 : 2)]
|
17
|
+
end
|
18
|
+
|
14
19
|
def date(params = {})
|
15
20
|
years_back = params[:year_range] || 5
|
16
21
|
latest_year = params [:year_latest] || 0
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'ffaker/utils/array_utils'
|
2
2
|
require 'ffaker/utils/random_utils'
|
3
|
+
require 'ffaker/utils/unique_utils'
|
3
4
|
|
4
5
|
module FFaker
|
5
6
|
module ModuleUtils
|
@@ -28,5 +29,9 @@ module FFaker
|
|
28
29
|
.tr('-', '_')
|
29
30
|
.downcase
|
30
31
|
end
|
32
|
+
|
33
|
+
def unique(max_retries = 10_000)
|
34
|
+
@unique_generator ||= FFaker::UniqueUtils.new(self, max_retries)
|
35
|
+
end
|
31
36
|
end
|
32
37
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'set'
|
4
|
+
|
5
|
+
module FFaker
|
6
|
+
class UniqueUtils
|
7
|
+
def initialize(generator, max_retries)
|
8
|
+
@generator = generator
|
9
|
+
@max_retries = max_retries
|
10
|
+
@previous_results = Hash.new { |hash, key| hash[key] = Set.new }
|
11
|
+
end
|
12
|
+
|
13
|
+
def method_missing(name, *arguments)
|
14
|
+
@generator.respond_to?(name) ? add_results_to_hash(name, *arguments) : super
|
15
|
+
end
|
16
|
+
|
17
|
+
def respond_to_missing?(method_name, include_private = false)
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
RetryLimitExceeded = Class.new(StandardError)
|
22
|
+
|
23
|
+
def clear
|
24
|
+
@previous_results.clear
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.clear
|
28
|
+
ObjectSpace.each_object(self, &:clear)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def add_results_to_hash(name, *arguments)
|
34
|
+
@max_retries.times do
|
35
|
+
result = @generator.send(name, *arguments)
|
36
|
+
|
37
|
+
next if @previous_results[[name, arguments]].include?(result)
|
38
|
+
|
39
|
+
@previous_results[[name, arguments]] << result
|
40
|
+
return result
|
41
|
+
end
|
42
|
+
raise RetryLimitExceeded
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/ffaker/vehicle.rb
CHANGED
@@ -5,14 +5,14 @@ module FFaker
|
|
5
5
|
extend ModuleUtils
|
6
6
|
extend self
|
7
7
|
|
8
|
-
DRIVETRAINS = %w
|
8
|
+
DRIVETRAINS = %w[4WD 4X4 AWD FWD RWD].freeze
|
9
9
|
YEARS = [*'1900'..(Date.today.year + 1).to_s].freeze
|
10
|
-
COLOR_PREFIXES = k(%w
|
10
|
+
COLOR_PREFIXES = k(%w[
|
11
11
|
beautiful bright calm dangerous dark dull fast magnetic magnificent majestic melodic metallic
|
12
12
|
mundane mute mysterious new pleasant pretty resonant royal slate soft tranquil vibrant weak
|
13
|
-
)
|
14
|
-
TRANSMISSIONS_ABBR = %w
|
15
|
-
CYLINDERS = %w
|
13
|
+
])
|
14
|
+
TRANSMISSIONS_ABBR = %w[AT MT AM CVT].freeze
|
15
|
+
CYLINDERS = %w[2 5 6 8].freeze
|
16
16
|
|
17
17
|
def base_color
|
18
18
|
FFaker::Color.name
|
data/scripts/reference.rb
CHANGED
@@ -22,7 +22,7 @@ end
|
|
22
22
|
# Returns faker methods for a given module
|
23
23
|
def faker_methods(mod)
|
24
24
|
methods = mod.methods - Module.methods -
|
25
|
-
[
|
25
|
+
%i[k underscore fetch_sample rand shuffle]
|
26
26
|
|
27
27
|
# For Company.name (et al), don't discard :name if it was reimplemented
|
28
28
|
methods << :name if mod.send(:name) != mod.to_s
|
data/test/test_address_gr.rb
CHANGED
@@ -16,23 +16,23 @@ class TestAddressGR < Test::Unit::TestCase
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_city
|
19
|
-
assert_match
|
19
|
+
assert_match(/\p{Greek}/, @address_gr.city)
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_region
|
23
|
-
assert_match
|
23
|
+
assert_match(/\p{Greek}/, @address_gr.region)
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_zip_code
|
27
|
-
assert_match
|
27
|
+
assert_match(/\A\d{5}\z/, @address_gr.zip_code)
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_street_name
|
31
|
-
assert_match
|
31
|
+
assert_match(/\p{Greek}/, @address_gr.street_name)
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_street_nbr
|
35
|
-
assert_match
|
35
|
+
assert_match(/\A\d{1,3}\z/, @address_gr.street_nbr)
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_street_address
|
data/test/test_address_ja.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
+
|
3
4
|
require 'helper'
|
4
5
|
|
5
6
|
class TestAddressJA < Test::Unit::TestCase
|
@@ -37,7 +38,7 @@ class TestAddressJA < Test::Unit::TestCase
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def test_designated_city
|
40
|
-
assert_match(japanese_regex('
|
41
|
+
assert_match(japanese_regex('[市区]'), FFaker::AddressJA.city)
|
41
42
|
end
|
42
43
|
|
43
44
|
def test_city
|
data/test/test_address_kr.rb
CHANGED
data/test/test_array_utils.rb
CHANGED
@@ -54,20 +54,20 @@ class TestArrayUtils < Test::Unit::TestCase
|
|
54
54
|
|
55
55
|
def test_self_random_pick_is_deterministic
|
56
56
|
supress_warn_output do
|
57
|
-
array = Array.new(10) { rand(
|
57
|
+
array = Array.new(10) { rand(0..9) }
|
58
58
|
assert_deterministic { FFaker::ArrayUtils.random_pick(array, 3) }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_self_rand_is_deterministic
|
63
63
|
supress_warn_output do
|
64
|
-
array = Array.new(10) { rand(
|
64
|
+
array = Array.new(10) { rand(0..9) }
|
65
65
|
assert_deterministic { FFaker::ArrayUtils.rand(array) }
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_self_shuffle_is_deterministic
|
70
|
-
array = Array.new(10) { rand(
|
70
|
+
array = Array.new(10) { rand(0..9) }
|
71
71
|
assert_deterministic { FFaker::ArrayUtils.shuffle(array) }
|
72
72
|
end
|
73
73
|
|
data/test/test_color.rb
CHANGED
data/test/test_company_it.rb
CHANGED
@@ -7,7 +7,7 @@ class TestCompanyIT < Test::Unit::TestCase
|
|
7
7
|
|
8
8
|
assert_methods_are_deterministic(
|
9
9
|
FFaker::CompanyIT,
|
10
|
-
:name, :suffix, :prefix
|
10
|
+
:name, :suffix, :prefix, :partita_iva
|
11
11
|
)
|
12
12
|
|
13
13
|
def test_name
|
@@ -21,4 +21,8 @@ class TestCompanyIT < Test::Unit::TestCase
|
|
21
21
|
def test_prefix
|
22
22
|
assert_match(/[ a-z]+/i, FFaker::CompanyIT.prefix)
|
23
23
|
end
|
24
|
+
|
25
|
+
def test_partita_iva
|
26
|
+
assert_match(/\d{11}/, FFaker::CompanyIT.partita_iva)
|
27
|
+
end
|
24
28
|
end
|
@@ -23,7 +23,7 @@ class TestIdentificationMX < Test::Unit::TestCase
|
|
23
23
|
|
24
24
|
def test_curp
|
25
25
|
or_curp_states_abbr = FFaker::IdentificationMX::ESTADOS_CURP.join('|')
|
26
|
-
re = /\A[a-z][aeioux][a-z]{2}
|
26
|
+
re = /\A[a-z][aeioux][a-z]{2}\d{2}[0-1]\d[0-3]\d[hm](?:#{or_curp_states_abbr})[bcdfghjklmnñpqrstvwxyz]{3}[0-9a-z]\d\z/ui
|
27
27
|
assert_match(re, FFaker::IdentificationMX.curp)
|
28
28
|
end
|
29
29
|
end
|
data/test/test_module_utils.rb
CHANGED
@@ -6,7 +6,7 @@ class TestModuleUtils < Test::Unit::TestCase
|
|
6
6
|
def test_provides_a_k_method_for_generating_constant_arrays
|
7
7
|
obj = Object.new
|
8
8
|
obj.extend FFaker::ModuleUtils
|
9
|
-
result = obj.k %w
|
9
|
+
result = obj.k %w[1 2 3]
|
10
10
|
|
11
11
|
assert result.frozen?
|
12
12
|
result.each { |e| assert e.frozen? }
|
data/test/test_name_ar.rb
CHANGED
@@ -29,14 +29,12 @@ class TestFakerNameAR < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_name_male
|
32
|
-
|
33
|
-
assert_include(@tester
|
34
|
-
assert_include(@tester::LAST_NAMES, last_name)
|
32
|
+
expected = @tester::FIRST_NAMES_MALE.product(@tester::LAST_NAMES).map { |set| set.join(' ') }
|
33
|
+
assert_include(expected, @tester.name_male)
|
35
34
|
end
|
36
35
|
|
37
36
|
def test_name_female
|
38
|
-
|
39
|
-
assert_include(@tester
|
40
|
-
assert_include(@tester::LAST_NAMES, last_name)
|
37
|
+
expected = @tester::FIRST_NAMES_FEMALE.product(@tester::LAST_NAMES).map { |set| set.join(' ') }
|
38
|
+
assert_include(expected, @tester.name_female)
|
41
39
|
end
|
42
40
|
end
|
data/test/test_name_cs.rb
CHANGED
@@ -63,10 +63,10 @@ class TestFakerNameCS < Test::Unit::TestCase
|
|
63
63
|
|
64
64
|
# checks if every name is of the same sex
|
65
65
|
def same_sex?(words, sex = :any)
|
66
|
-
(sex == :any ? [
|
66
|
+
(sex == :any ? %i[male female] : [sex]).any? do |s|
|
67
67
|
words.all? do |word|
|
68
68
|
[@tester::LAST_NAMES, @tester::FIRST_NAMES].any? do |names|
|
69
|
-
names[
|
69
|
+
names[s].include?(word)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
data/test/test_name_ja.rb
CHANGED
@@ -5,8 +5,8 @@ require 'helper'
|
|
5
5
|
class TestFakerNameJA < Test::Unit::TestCase
|
6
6
|
class << self
|
7
7
|
def startup
|
8
|
-
FFaker::NameJA.const_set(:FIRST_NAMES, %w
|
9
|
-
FFaker::NameJA.const_set(:LAST_NAMES, %w
|
8
|
+
FFaker::NameJA.const_set(:FIRST_NAMES, %w[あきら フミ 三郎])
|
9
|
+
FFaker::NameJA.const_set(:LAST_NAMES, %w[佐藤 高橋 佐々木])
|
10
10
|
end
|
11
11
|
|
12
12
|
def shutdown
|
data/test/test_name_ru.rb
CHANGED
@@ -75,10 +75,10 @@ class TestFakerNameRU < Test::Unit::TestCase
|
|
75
75
|
|
76
76
|
# checks if every name is of the same sex
|
77
77
|
def same_sex?(words, sex = :any)
|
78
|
-
(sex == :any ? [
|
78
|
+
(sex == :any ? %i[male female] : [sex]).any? do |s|
|
79
79
|
words.all? do |word|
|
80
80
|
[@tester::LAST_NAMES, @tester::FIRST_NAMES, @tester::PATRONYMICS].any? do |names|
|
81
|
-
names[
|
81
|
+
names[s].include?(word)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
data/test/test_phone_number.rb
CHANGED
@@ -38,8 +38,8 @@ class TestPhoneNumer < Test::Unit::TestCase
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_imei_with_sn
|
41
|
-
sn = rand(1_000_000)
|
42
|
-
assert_match(/\A\d{8}#{
|
41
|
+
sn = rand(0...1_000_000)
|
42
|
+
assert_match(/\A\d{8}#{format('%06d', sn)}\d{1}\z/,
|
43
43
|
FFaker::PhoneNumber.imei(sn))
|
44
44
|
assert_deterministic { FFaker::PhoneNumber.imei(sn) }
|
45
45
|
end
|
data/test/test_string.rb
CHANGED
data/test/test_time.rb
CHANGED
@@ -5,7 +5,7 @@ require 'helper'
|
|
5
5
|
class TestFakerTime < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(FFaker::Time, :date, :datetime, :month)
|
8
|
+
assert_methods_are_deterministic(FFaker::Time, :date, :datetime, :month, :day_of_week)
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@tester = FFaker::Time
|
@@ -16,6 +16,14 @@ class TestFakerTime < Test::Unit::TestCase
|
|
16
16
|
assert_match(date_regex, @tester.date)
|
17
17
|
end
|
18
18
|
|
19
|
+
def test_day_of_week
|
20
|
+
day_of_week_short_regex = /\A(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\z/
|
21
|
+
day_of_week_long_regex = /\A(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)\z/
|
22
|
+
assert_match(day_of_week_short_regex, @tester.day_of_week)
|
23
|
+
assert_match(day_of_week_long_regex, @tester.day_of_week(long: true))
|
24
|
+
assert_deterministic { @tester.day_of_week }
|
25
|
+
end
|
26
|
+
|
19
27
|
def test_date_hours_and_minutes
|
20
28
|
assert_match('04:20:00', @tester.date(hours: 4, minutes: 20))
|
21
29
|
assert_deterministic { @tester.date(hours: 4, minutes: 20) }
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestUniqueUtils < Test::Unit::TestCase
|
6
|
+
def test_generates_unique_values
|
7
|
+
unique_object = FFaker::UniqueUtils.new(FFaker::Name, 10_000)
|
8
|
+
|
9
|
+
result = [unique_object.name, unique_object.name]
|
10
|
+
assert_operator(result[0], :!=, result[1])
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_returns_error_when_retries_exceeded
|
14
|
+
stubbed_generator = Object.new
|
15
|
+
def stubbed_generator.test
|
16
|
+
1
|
17
|
+
end
|
18
|
+
|
19
|
+
unique_object = FFaker::UniqueUtils.new(stubbed_generator, 3)
|
20
|
+
|
21
|
+
unique_object.test
|
22
|
+
|
23
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
24
|
+
unique_object.test
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_clears_unique_values
|
29
|
+
stubbed_generator = Object.new
|
30
|
+
def stubbed_generator.test
|
31
|
+
1
|
32
|
+
end
|
33
|
+
|
34
|
+
unique_object = FFaker::UniqueUtils.new(stubbed_generator, 3)
|
35
|
+
|
36
|
+
assert_equal(1, unique_object.test)
|
37
|
+
|
38
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
39
|
+
unique_object.test
|
40
|
+
end
|
41
|
+
|
42
|
+
FFaker::UniqueUtils.clear
|
43
|
+
|
44
|
+
assert_equal(1, unique_object.test)
|
45
|
+
|
46
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
47
|
+
unique_object.test
|
48
|
+
end
|
49
|
+
|
50
|
+
unique_object.clear
|
51
|
+
|
52
|
+
assert_equal(1, unique_object.test)
|
53
|
+
end
|
54
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/ffaker/ffaker/graphs/contributors
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-09-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- lib/ffaker/data/company/catch_pos
|
201
201
|
- lib/ffaker/data/company/catch_pre
|
202
202
|
- lib/ffaker/data/company/position_areas
|
203
|
+
- lib/ffaker/data/company_it/piva_office_codes
|
203
204
|
- lib/ffaker/data/conference/conference_list
|
204
205
|
- lib/ffaker/data/currency/currency_code
|
205
206
|
- lib/ffaker/data/currency/currency_name
|
@@ -450,6 +451,7 @@ files:
|
|
450
451
|
- lib/ffaker/utils/array_utils.rb
|
451
452
|
- lib/ffaker/utils/module_utils.rb
|
452
453
|
- lib/ffaker/utils/random_utils.rb
|
454
|
+
- lib/ffaker/utils/unique_utils.rb
|
453
455
|
- lib/ffaker/vehicle.rb
|
454
456
|
- lib/ffaker/venue.rb
|
455
457
|
- lib/ffaker/youtube.rb
|
@@ -596,6 +598,7 @@ files:
|
|
596
598
|
- test/test_string.rb
|
597
599
|
- test/test_time.rb
|
598
600
|
- test/test_tweet.rb
|
601
|
+
- test/test_unique_utils.rb
|
599
602
|
- test/test_units.rb
|
600
603
|
- test/test_units_english.rb
|
601
604
|
- test/test_units_metric.rb
|
@@ -767,6 +770,7 @@ test_files:
|
|
767
770
|
- test/test_string.rb
|
768
771
|
- test/test_time.rb
|
769
772
|
- test/test_tweet.rb
|
773
|
+
- test/test_unique_utils.rb
|
770
774
|
- test/test_units.rb
|
771
775
|
- test/test_units_english.rb
|
772
776
|
- test/test_units_metric.rb
|