factory-helper 1.7.5 → 1.7.6

Sign up to get free protection for your applications and to get access to all the features.
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