factory-helper 1.7.5 → 1.7.6

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.
Files changed (65) hide show
  1. checksums.yaml +5 -13
  2. data/lib/factory-helper/version.rb +1 -1
  3. data/spec/config_spec.rb +18 -0
  4. data/spec/factory_helper/my_sql_spec.rb +123 -0
  5. data/spec/factory_helper/string_spec.rb +55 -0
  6. data/spec/rspec_locale_hooks_spec.rb +28 -0
  7. data/spec/spec_helper.rb +92 -0
  8. data/test/legacy/test_array_sample_method_compat.rb +56 -0
  9. data/test/legacy/test_avatar.rb +36 -0
  10. data/test/legacy/test_en_au_ocker_locale.rb +23 -0
  11. data/test/legacy/test_en_ca_locale.rb +18 -0
  12. data/test/legacy/test_en_locale.rb +25 -0
  13. data/test/legacy/test_en_us_locale.rb +79 -0
  14. data/test/legacy/test_es_locale.rb +34 -0
  15. data/test/legacy/test_faker.rb +29 -0
  16. data/test/legacy/test_faker_app.rb +12 -0
  17. data/test/legacy/test_faker_bitcoin.rb +14 -0
  18. data/test/legacy/test_faker_business.rb +33 -0
  19. data/test/legacy/test_faker_city.rb +46 -0
  20. data/test/legacy/test_faker_code.rb +27 -0
  21. data/test/legacy/test_faker_commerce.rb +74 -0
  22. data/test/legacy/test_faker_company.rb +19 -0
  23. data/test/legacy/test_faker_date.rb +77 -0
  24. data/test/legacy/test_faker_hacker_talk.rb +37 -0
  25. data/test/legacy/test_faker_internet.rb +146 -0
  26. data/test/legacy/test_faker_lorem.rb +87 -0
  27. data/test/legacy/test_faker_name.rb +20 -0
  28. data/test/legacy/test_faker_number.rb +77 -0
  29. data/test/legacy/test_faker_street.rb +53 -0
  30. data/test/legacy/test_faker_team.rb +13 -0
  31. data/test/legacy/test_faker_time.rb +74 -0
  32. data/test/legacy/test_flexible.rb +57 -0
  33. data/test/legacy/test_locale.rb +45 -0
  34. data/test/legacy/test_pl_locale.rb +27 -0
  35. data/test/test_avatar.rb +36 -0
  36. data/test/test_determinism.rb +57 -0
  37. data/test/test_en_au_ocker_locale.rb +23 -0
  38. data/test/test_en_ca_locale.rb +18 -0
  39. data/test/test_en_locale.rb +25 -0
  40. data/test/test_en_us_locale.rb +79 -0
  41. data/test/test_es_locale.rb +34 -0
  42. data/test/test_factory_helper.rb +28 -0
  43. data/test/test_factory_helper_app.rb +12 -0
  44. data/test/test_factory_helper_bitcoin.rb +14 -0
  45. data/test/test_factory_helper_business.rb +33 -0
  46. data/test/test_factory_helper_city.rb +46 -0
  47. data/test/test_factory_helper_code.rb +27 -0
  48. data/test/test_factory_helper_commerce.rb +70 -0
  49. data/test/test_factory_helper_company.rb +23 -0
  50. data/test/test_factory_helper_date.rb +78 -0
  51. data/test/test_factory_helper_hacker_talk.rb +37 -0
  52. data/test/test_factory_helper_internet.rb +155 -0
  53. data/test/test_factory_helper_lorem.rb +87 -0
  54. data/test/test_factory_helper_name.rb +54 -0
  55. data/test/test_factory_helper_number.rb +77 -0
  56. data/test/test_factory_helper_slack_emoji.rb +45 -0
  57. data/test/test_factory_helper_street.rb +53 -0
  58. data/test/test_factory_helper_team.rb +13 -0
  59. data/test/test_factory_helper_time.rb +74 -0
  60. data/test/test_flexible.rb +57 -0
  61. data/test/test_fr_locale.rb +34 -0
  62. data/test/test_helper.rb +15 -0
  63. data/test/test_locale.rb +45 -0
  64. data/test/test_pl_locale.rb +27 -0
  65. metadata +144 -20
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
2
+
3
+ class TestFakerHacker < Test::Unit::TestCase
4
+ def setup
5
+ @hacker = Faker::Hacker
6
+ @phrases = @hacker.phrases
7
+ end
8
+
9
+ def test_phrases
10
+ assert @phrases.size == 8
11
+ @phrases.each do |phrase|
12
+ assert !phrase.nil?
13
+ assert phrase != ""
14
+ end
15
+ end
16
+
17
+ def test_noun
18
+ assert @hacker.noun.match(/\w+/)
19
+ end
20
+
21
+ def test_abbreviation
22
+ assert @hacker.abbreviation.match(/\w+/)
23
+ end
24
+
25
+ def test_adjective
26
+ assert @hacker.adjective.match(/\w+/)
27
+ end
28
+
29
+ def test_verb
30
+ assert @hacker.verb.match(/\w+/)
31
+ end
32
+
33
+ def test_ingverb
34
+ assert @hacker.ingverb.match(/\w+/)
35
+ end
36
+
37
+ end
@@ -0,0 +1,146 @@
1
+ # coding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
3
+
4
+ class TestFakerInternet < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @tester = Faker::Internet
8
+ end
9
+
10
+ def test_email
11
+ assert @tester.email.match(/.+@.+\.\w+/)
12
+ end
13
+
14
+ def test_free_email
15
+ assert @tester.free_email.match(/.+@(gmail|hotmail|yahoo)\.com/)
16
+ end
17
+
18
+ def test_safe_email
19
+ assert @tester.safe_email.match(/.+@example.(com|net|org)/)
20
+ end
21
+
22
+ def test_user_name
23
+ assert @tester.user_name.match(/[a-z]+((_|\.)[a-z]+)?/)
24
+ end
25
+
26
+ def test_user_name_with_string_arg
27
+ assert @tester.user_name('bo peep').match(/(bo(_|\.)peep|peep(_|\.)bo)/)
28
+ end
29
+
30
+ def test_user_name_with_integer_arg
31
+ (1..32).each do |min_length|
32
+ assert @tester.user_name(min_length).length >= min_length
33
+ end
34
+ end
35
+
36
+ def test_user_name_with_closed_range_arg
37
+ (1..32).each do |min_length|
38
+ (min_length..32).each do |max_length|
39
+ l = @tester.user_name((min_length..max_length)).length
40
+ assert l >= min_length
41
+ assert l <= max_length
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_user_name_with_open_range_arg
47
+ (1..32).each do |min_length|
48
+ (min_length+1..33).each do |max_length|
49
+ l = @tester.user_name((min_length...max_length)).length
50
+ assert l >= min_length
51
+ assert l <= max_length-1
52
+ end
53
+ end
54
+ end
55
+
56
+ def test_user_name_with_range_and_separators
57
+ (1..32).each do |min_length|
58
+ (min_length+1..33).each do |max_length|
59
+ u = @tester.user_name((min_length...max_length), %w(=))
60
+ assert u.length.between? min_length, max_length-1
61
+ assert u.match(/\A[a-z]+((=)?[a-z]*)*\z/)
62
+ end
63
+ end
64
+ end
65
+
66
+ def test_password
67
+ assert @tester.password.match(/\w{3}/)
68
+ end
69
+
70
+ def test_password_with_integer_arg
71
+ (1..32).each do |min_length|
72
+ assert @tester.password(min_length).length >= min_length
73
+ end
74
+ end
75
+
76
+ def test_password_max_with_integer_arg
77
+ (1..32).each do |min_length|
78
+ max_length = min_length + 4
79
+ assert @tester.password(min_length, max_length).length <= max_length
80
+ end
81
+ end
82
+
83
+ def test_domain_name
84
+ assert @tester.domain_name.match(/\w+\.\w+/)
85
+ end
86
+
87
+ def test_domain_word
88
+ assert @tester.domain_word.match(/^\w+$/)
89
+ end
90
+
91
+ def test_domain_suffix
92
+ assert @tester.domain_suffix.match(/^\w+(\.\w+)?/)
93
+ end
94
+
95
+ def test_ip_v4_address
96
+ assert_equal 3, @tester.ip_v4_address.count('.')
97
+
98
+ 1000.times do
99
+ assert @tester.ip_v4_address.split('.').map{|octet| octet.to_i}.max <= 255
100
+ end
101
+ end
102
+
103
+ def test_mac_address
104
+ assert_equal 5, @tester.mac_address.count(':')
105
+ assert_equal 5, @tester.mac_address("").count(':')
106
+
107
+ 1000.times do
108
+ assert @tester.mac_address.split(':').map{|d| d.to_i(16)}.max <= 255
109
+ end
110
+
111
+ assert @tester.mac_address("fa:fa:fa").start_with?("fa:fa:fa")
112
+ assert @tester.mac_address("01:02").start_with?("01:02")
113
+ end
114
+
115
+ def test_ip_v6_address
116
+ assert_equal 7, @tester.ip_v6_address.count(':')
117
+
118
+ 1000.times do
119
+ assert @tester.ip_v6_address.split('.').map{|h| "0x#{h}".hex}.max <= 65535
120
+ end
121
+ end
122
+
123
+ def test_slug
124
+ assert @tester.slug.match(/^[a-z]+(_|\.|\-)[a-z]+$/)
125
+ end
126
+
127
+ def test_slug_with_content_arg
128
+ assert @tester.slug('Foo bAr baZ').match(/^foo(_|\.|\-)bar(_|\.|\-)baz$/)
129
+ end
130
+
131
+ def test_slug_with_glue_arg
132
+ assert @tester.slug(nil, '+').match(/^[a-z]+\+[a-z]+$/)
133
+ end
134
+
135
+ def test_url
136
+ assert @tester.url('domain.com', '/username').match(/^http:\/\/domain\.com\/username$/)
137
+ end
138
+
139
+ def test_device_token
140
+ assert_equal 64, @tester.device_token.size
141
+ end
142
+
143
+ def test_fix_umlauts
144
+ assert_equal "aeoeuess", FactoryHelper::Internet.fix_umlauts('äöüß')
145
+ end
146
+ end
@@ -0,0 +1,87 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class TestFakerLorem < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = Faker::Lorem
7
+ @standard_wordlist = I18n.translate('factory_helper.lorem.words')
8
+ @complete_wordlist =
9
+ @standard_wordlist + I18n.translate('factory_helper.lorem.supplemental')
10
+ end
11
+
12
+ def test_character
13
+ assert @tester.character.length == 1
14
+ end
15
+
16
+ def test_character_type
17
+ assert @tester.character.class == String
18
+ end
19
+
20
+ def test_characters
21
+ assert @tester.characters.length == 255
22
+ end
23
+
24
+ def test_characters_with_args
25
+ 1000.times { assert @tester.characters(500).length == 500 }
26
+ end
27
+
28
+ # Words delivered by a standard request should be on the standard wordlist.
29
+ def test_standard_words
30
+ @words = @tester.words(1000)
31
+ @words.each {|w| assert @standard_wordlist.include?(w) }
32
+ end
33
+
34
+ # Words requested from the supplemental list should all be in that list.
35
+ def test_supplemental_words
36
+ @words = @tester.words(10000, true)
37
+ @words.each {|w| assert @complete_wordlist.include?(w) }
38
+ end
39
+
40
+ # Faker::Lorem.word generates random word from standart wordlist
41
+ def test_word
42
+ @tester = Faker::Lorem
43
+ @standard_wordlist = I18n.translate('factory_helper.lorem.words')
44
+ 1000.times { assert @standard_wordlist.include?(@tester.word) }
45
+ end
46
+
47
+ def test_exact_count_param
48
+ assert(@tester.characters(2).length == 2)
49
+ assert(@tester.words(2).length == 2)
50
+ assert(@tester.sentences(2).length == 2)
51
+ assert(@tester.paragraphs(2).length == 2)
52
+ end
53
+
54
+ def test_range_count_param
55
+ cs = @tester.characters(2..5)
56
+ ws = @tester.words(2..5)
57
+ ss = @tester.sentences(2..5)
58
+ ps = @tester.paragraphs(2..5)
59
+
60
+ assert(2 <= cs.length && cs.length <= 5)
61
+ assert(2 <= ws.length && ws.length <= 5)
62
+ assert(2 <= ss.length && ss.length <= 5)
63
+ assert(2 <= ps.length && ps.length <= 5)
64
+ end
65
+
66
+ def test_array_count_param
67
+ cs = @tester.characters([1,4])
68
+ ws = @tester.words([1,4])
69
+ ss = @tester.sentences([1,4])
70
+ ps = @tester.paragraphs([1,4])
71
+
72
+ assert(cs.length == 1 || cs.length == 4)
73
+ assert(ws.length == 1 || ws.length == 4)
74
+ assert(ss.length == 1 || ss.length == 4)
75
+ assert(ps.length == 1 || ps.length == 4)
76
+ end
77
+
78
+ def test_words_with_large_count_params
79
+ exact = @tester.words(500)
80
+ range = @tester.words(250..500)
81
+ array = @tester.words([250, 500])
82
+
83
+ assert(exact.length == 500)
84
+ assert(250 <= range.length && range.length <= 500)
85
+ assert(array.length == 250 || array.length == 500)
86
+ end
87
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
2
+
3
+ class TestFakerName < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = Faker::Name
7
+ end
8
+
9
+ def test_name
10
+ assert @tester.name.match(/(\w+\.? ?){2,3}/)
11
+ end
12
+
13
+ def test_prefix
14
+ assert @tester.prefix.match(/[A-Z][a-z]+\.?/)
15
+ end
16
+
17
+ def test_suffix
18
+ assert @tester.suffix.match(/[A-Z][a-z]*\.?/)
19
+ end
20
+ end
@@ -0,0 +1,77 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
2
+
3
+ class TestFakerNumber < Test::Unit::TestCase
4
+ def setup
5
+ @tester = Faker::Number
6
+ end
7
+
8
+ def test_number
9
+ assert @tester.number(10).match(/[0-9]{10}/)
10
+
11
+ 10.times do |digits|
12
+ digits += 1
13
+ assert @tester.number(digits).match(/^[0-9]{#{digits}}$/)
14
+ end
15
+
16
+ assert @tester.number(10).length == 10
17
+ assert @tester.number(1).length == 1
18
+ assert @tester.number(0) == ""
19
+ end
20
+
21
+ def test_decimal
22
+ assert @tester.decimal(2).match(/[0-9]{2}\.[0-9]{2}/)
23
+ assert @tester.decimal(4, 5).match(/[0-9]{4}\.[0-9]{5}/)
24
+ end
25
+
26
+ def test_digit
27
+ assert @tester.digit.match(/[0-9]{1}/)
28
+ assert (1..1000).collect {|i| @tester.digit == "9"}.include?(true)
29
+ end
30
+
31
+ def test_between
32
+ 100.times do
33
+ random_number = @tester.between(-50, 50)
34
+ assert random_number >= -50, "Expected >= -50, but got #{random_number}"
35
+ assert random_number <= 50, "Expected <= 50, but got #{random_number}"
36
+ end
37
+ end
38
+
39
+ def test_positive
40
+ 100.times do
41
+ random_number = @tester.positive(1, 100)
42
+ assert random_number >= 1, "Expected >= 1, but got #{random_number}"
43
+ assert random_number <= 100, "Expected <= 100, but got #{random_number}"
44
+ end
45
+ end
46
+
47
+ def test_negative
48
+ 100.times do
49
+ random_number = @tester.negative(-1, -100)
50
+ assert random_number <= -1, "Expected <= -1, but got #{random_number}"
51
+ assert random_number >= -100, "Expected >= -100, but got #{random_number}"
52
+ end
53
+ end
54
+
55
+ def test_force_positive
56
+ random_number = @tester.positive(-1, -100)
57
+ assert random_number >= 1, "Expected >= 1, but got #{random_number}"
58
+ assert random_number <= 100, "Expected <= 100, but got #{random_number}"
59
+ end
60
+
61
+ def test_force_negative
62
+ random_number = @tester.negative(1, 100)
63
+ assert random_number <= -1, "Expected <= -1, but got #{random_number}"
64
+ assert random_number >= -100, "Expected >= -100, but got #{random_number}"
65
+ end
66
+
67
+ def test_parameters_order
68
+ random_number = @tester.between(100, 1)
69
+ assert random_number >= 1, "Expected >= 1, but got #{random_number}"
70
+ assert random_number <= 100, "Expected <= 100, but got #{random_number}"
71
+ end
72
+
73
+ def test_hexadecimal
74
+ assert @tester.hexadecimal(4).match(/[0-9a-f]{4}/)
75
+ assert @tester.hexadecimal(7).match(/[0-9a-f]{7}/)
76
+ end
77
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class TestFakerStreet < Test::Unit::TestCase
4
+ def setup
5
+ I18n.reload!
6
+ shire = {
7
+ :factory_helper => {
8
+ :address => {
9
+ :street_name => ['#{street_prefix} #{street_root} #{street_suffix}'],
10
+ :street_prefix => ["Wide"],
11
+ :street_root => ["Cheerful"],
12
+ :street_suffix => ["Path"],
13
+ :secondary_address => ["(Green Door)"],
14
+ :street_address => ['#{street_name} #{building_number}'],
15
+ :building_number => ["#"],
16
+ :time_zone => ["Pacific/Pago_Pago"],
17
+ }
18
+ }
19
+ }
20
+ I18n.backend.store_translations(:shire, shire)
21
+ end
22
+
23
+ def test_street_name_supports_flexible_formats
24
+ I18n.with_locale(:shire) do
25
+ assert_equal "Wide Cheerful Path", Faker::Address.street_name
26
+ end
27
+ end
28
+
29
+ def test_street_address_supports_flexible_formats
30
+ I18n.with_locale(:shire) do
31
+ assert_match(/Wide Cheerful Path \d/, Faker::Address.street_address)
32
+ end
33
+ end
34
+
35
+ def test_street_address_optionally_provides_secondary_address
36
+ I18n.with_locale(:shire) do
37
+ assert_match(/Wide Cheerful Path \d \(Green Door\)/, Faker::Address.street_address(:include_secondary))
38
+ end
39
+ end
40
+
41
+ def test_street_address_with_locale_fallback
42
+ I18n.with_locale('en-GB') do
43
+ assert_match(/^\d+ [\w']+ \w+/, Faker::Address.street_address)
44
+ end
45
+ end
46
+
47
+ def test_timezone_support
48
+ I18n.with_locale(:shire) do
49
+ assert_equal "Pacific/Pago_Pago", Faker::Address.time_zone
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
2
+
3
+ class TestFakerTeam < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = Faker::Team
7
+ end
8
+
9
+ def test_name
10
+ assert @tester.name.match(/(\w+\.? ?){2}/)
11
+ end
12
+
13
+ end
@@ -0,0 +1,74 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
2
+
3
+ class TestFakerTime < Test::Unit::TestCase
4
+ def setup
5
+ @tester = Faker::Time
6
+ @time_ranges = Faker::Time::TIME_RANGES
7
+ end
8
+
9
+ def test_between
10
+ from = Time.local(2012, 01, 01, 0, 0, 0)
11
+ to = Time.local(2013, 01, 01, 23, 59, 59)
12
+
13
+ 100.times do
14
+ random_time = @tester.between(from, to)
15
+ assert random_time >= from, "Expected >= \"#{from}\", but got #{random_time}"
16
+ assert random_time <= to , "Expected <= \"#{to}\", but got #{random_time}"
17
+ end
18
+ end
19
+
20
+ def test_forward
21
+ today = Date.today
22
+
23
+ 100.times do
24
+ random_time = @tester.forward(10)
25
+ assert random_time > today.to_time, "Expected > \"#{today}\", but got #{random_time}"
26
+ end
27
+ end
28
+
29
+ def test_backward
30
+ tomorrow = Date.today + 1
31
+
32
+ 100.times do
33
+ random_time = @tester.backward(10)
34
+ assert random_time < tomorrow.to_time, "Expected < \"#{tomorrow}\", but got #{random_time}"
35
+ end
36
+ end
37
+
38
+ def test_invalid_period_error
39
+ from = Date.today
40
+ to = Date.today + 15
41
+
42
+ assert_raise ArgumentError do
43
+ @tester.between(from, to, :invalid_period)
44
+ end
45
+ end
46
+
47
+ def test_return_type
48
+ random_backward = @tester.backward(5)
49
+ random_between = @tester.between(Date.today, Date.today + 5)
50
+ random_forward = @tester.forward(5)
51
+
52
+ [random_backward, random_between, random_forward].each do |result|
53
+ assert result.is_a?(Time), "Expected a Time object, but got #{result.class}"
54
+ end
55
+ end
56
+
57
+ def test_time_period
58
+ from = Date.today
59
+ to = Date.today + 15
60
+
61
+ 100.times do
62
+ period = @time_ranges.keys.to_a.sample
63
+ period_range = @time_ranges[period]
64
+
65
+ random_backward = @tester.backward(30, period)
66
+ random_between = @tester.between(from, to, period)
67
+ random_forward = @tester.forward(30, period)
68
+
69
+ [random_backward, random_between, random_forward].each do |result|
70
+ assert period_range.include?(result.hour.to_i), "\"#{result.hour}\" expected to be included in Faker::Time::TIME_RANGES[:#{period}] range"
71
+ end
72
+ end
73
+ end
74
+ end