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,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperApp < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::App
6
+ end
7
+
8
+ def test_name
9
+ assert @tester.author.match(/(\w+\.? ?){2,3}/)
10
+ end
11
+
12
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperBitcoin < Test::Unit::TestCase
4
+
5
+ def test_address
6
+ assert FactoryHelper::Bitcoin.address.match(/^[13][1-9A-Za-z][^OIl]{20,40}/)
7
+ end
8
+
9
+ def test_testnet_address
10
+ assert_match(/\A[mn][1-9A-Za-z]{32,34}\Z/, FactoryHelper::Bitcoin.testnet_address)
11
+ assert_not_match(/[OIl]/, FactoryHelper::Bitcoin.testnet_address)
12
+ end
13
+
14
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFactoryHelperBusiness < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = FactoryHelper::Business
7
+ @credit_card_number_list = I18n.translate('factory_helper.business.credit_card_numbers')
8
+ @credit_card_number_expiry_dates = I18n.translate('factory_helper.business.credit_card_expiry_dates')
9
+ @credit_card_types = I18n.translate('factory_helper.business.credit_card_types')
10
+ end
11
+
12
+ def test_credit_card_number
13
+ number1 = @tester.credit_card_number
14
+ number2 = @tester.credit_card_number
15
+ assert @credit_card_number_list.include?(number1)
16
+ assert @credit_card_number_list.include?(number2)
17
+ end
18
+
19
+ def test_credit_card_expiry_date
20
+ date1 = @tester.credit_card_expiry_date
21
+ date2 = @tester.credit_card_expiry_date
22
+ assert @credit_card_number_expiry_dates.collect{|d| Date.parse(d)}.include?(date1)
23
+ assert @credit_card_number_expiry_dates.collect{|d| Date.parse(d)}.include?(date2)
24
+ end
25
+
26
+ def test_credit_card_type
27
+ type1 = @tester.credit_card_type
28
+ type2 = @tester.credit_card_type
29
+ assert @credit_card_types.include?(type1)
30
+ assert @credit_card_types.include?(type2)
31
+ end
32
+
33
+ end
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFactoryHelperCity < Test::Unit::TestCase
4
+ def setup
5
+ I18n.reload!
6
+ xx = {
7
+ :factory_helper => {
8
+ :name => {:female_first_name => ['alice'], :male_first_name => ['alice'], :last_name => ['smith']},
9
+ :address => {:city_prefix => ['west'], :city_suffix => ['burg']}
10
+ }
11
+ }
12
+ I18n.backend.store_translations(:xx, xx)
13
+
14
+ xy = {
15
+ :factory_helper => {
16
+ :address => {
17
+ :city_prefix => ['big'],
18
+ :city_root => ['rock'],
19
+ :city_root_suffix => ['ing'],
20
+ :city_suffix => ['town'],
21
+ :city => ['#{city_prefix} #{city_root}#{city_root_suffix} #{city_suffix}']
22
+ }
23
+ }
24
+ }
25
+ I18n.backend.store_translations(:xy, xy)
26
+ end
27
+
28
+ def test_default_city_formats
29
+ I18n.with_locale(:xx) do
30
+ 100.times do
31
+ cities = ["west alice", "west smith", "west aliceburg", "west smithburg", "aliceburg", "smithburg"]
32
+ city = FactoryHelper::Address.city
33
+ assert cities.include?(city), "Expected <#{cities.join(' / ')}>, but got #{city}"
34
+ end
35
+ end
36
+ end
37
+
38
+ def test_city_formats_are_flexible
39
+ I18n.with_locale(:xy) do
40
+ cities = ['big rocking town']
41
+ city = FactoryHelper::Address.city
42
+ assert cities.include?(city), "Expected <#{cities.join(' / ')}>, but got #{city}"
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFactoryHelperCode < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::Code
6
+ end
7
+
8
+ def test_default_isbn_regexp
9
+ assert @tester.isbn.match(/^\d{9}-[\d|X]$/)
10
+ end
11
+
12
+ def test_default_isbn13_regexp
13
+ assert @tester.isbn(13).match(/^\d{12}-\d$/)
14
+ end
15
+
16
+ def test_default_ean_regexp
17
+ assert @tester.ean.match(/^\d{13}$/)
18
+ end
19
+
20
+ def test_default_ean8_regexp
21
+ assert @tester.ean(8).match(/^\d{8}$/)
22
+ end
23
+
24
+ def test_rut
25
+ assert @tester.rut.match(/^\d{1,8}-(\d|k)$/)
26
+ end
27
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperCommerce < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = FactoryHelper::Commerce
7
+ end
8
+
9
+ def test_color
10
+ assert @tester.color.match(/[a-z]+\.?/)
11
+ end
12
+
13
+ def test_department
14
+ assert @tester.department.match(/[A-Z][a-z]+\.?/)
15
+ end
16
+
17
+ def test_single_department_should_not_contain_separators
18
+ assert_match(/\A[A-Za-z]+\z/, @tester.department(1))
19
+ end
20
+
21
+ def test_department_should_have_ampersand_as_default_separator
22
+ assert_match ' & ', @tester.department(2, true)
23
+ end
24
+
25
+ def test_department_should_accept_localized_separator
26
+ data = {
27
+ :factory_helper => {
28
+ :separator => ' + ',
29
+ :commerce => {
30
+ :department => ['Books', 'Movies']
31
+ }
32
+ }
33
+ }
34
+
35
+ I18n.reload!
36
+ I18n.backend.store_translations(:xy, data)
37
+ I18n.with_locale(:xy) do
38
+ assert_match ' + ', @tester.department(2, true)
39
+ end
40
+ end
41
+
42
+ def test_department_should_have_exact_number_of_categories_when_fixed_amount
43
+ assert_match(/\A([A-Za-z]+, ){8}[A-Za-z]+ & [A-Za-z]+\z/, @tester.department(10, true))
44
+ end
45
+
46
+ def test_department_should_never_exceed_the_max_number_of_categories_when_random_amount
47
+ 100.times do
48
+ assert_match(/\A([A-Za-z]+(, | & )){0,5}[A-Za-z]+\z/, @tester.department(6))
49
+ end
50
+ end
51
+
52
+ def test_department_should_have_no_duplicate_categories
53
+ department = @tester.department(10, true)
54
+
55
+ departments = department.split(/[,& ]+/)
56
+ assert_equal departments, departments.uniq
57
+ end
58
+
59
+ def test_product_name
60
+ assert @tester.product_name.match(/[A-Z][a-z]+\.?/)
61
+ end
62
+
63
+ def test_price
64
+ assert_includes 0..100, @tester.price
65
+ end
66
+
67
+ def test_price_is_float
68
+ assert @tester.price.is_a? Float
69
+ end
70
+ end
@@ -0,0 +1,23 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperCompany < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::Company
6
+ end
7
+
8
+ def test_ein
9
+ assert @tester.ein.match(/\d\d-\d\d\d\d\d\d\d/)
10
+ end
11
+
12
+ def test_duns_number
13
+ assert @tester.duns_number.match(/\d\d-\d\d\d-\d\d\d\d/)
14
+ end
15
+
16
+ def test_logo
17
+ assert @tester.logo.match(%r{http://pigment.github.io/fake-logos/logos/medium/color/\d+\.png})
18
+ end
19
+
20
+ def test_buzzword
21
+ assert @tester.buzzword.match(/\w+\.?/)
22
+ end
23
+ end
@@ -0,0 +1,78 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperDate < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::Date
6
+ end
7
+
8
+ def test_between
9
+ from = Date.parse("2012-01-01")
10
+ to = Date.parse("2013-01-01")
11
+
12
+ 100.times do
13
+ random_date = @tester.between(from, to)
14
+ assert random_date >= from, "Expected >= \"#{from}\", but got #{random_date}"
15
+ assert random_date <= to , "Expected <= \"#{to}\", but got #{random_date}"
16
+ end
17
+ end
18
+
19
+ def test_forward
20
+ today = Date.today
21
+
22
+ 100.times do
23
+ random_date = @tester.forward(5)
24
+ assert random_date > today, "Expected > \"#{today}\", but got #{random_date}"
25
+ end
26
+ end
27
+
28
+ def test_backward
29
+ today = Date.today
30
+
31
+ 100.times do
32
+ random_date = @tester.backward(5)
33
+ assert random_date < today, "Expected < \"#{today}\", but got #{random_date}"
34
+ end
35
+ end
36
+
37
+ def test_return_type
38
+ random_forward = @tester.forward(5)
39
+ random_backward = @tester.backward(5)
40
+ random_between = @tester.between(Date.today, Date.today + 5)
41
+
42
+ [random_forward, random_backward, random_between].each do |result|
43
+ assert result.is_a?(Date), "Expected a Date object, but got #{result.class}"
44
+ end
45
+ end
46
+
47
+ def test_invalid_date
48
+ assert_raise ArgumentError do
49
+ @tester.between("9999-99-99", "9999-99-99")
50
+ end
51
+ end
52
+
53
+ def test_birthday
54
+ min = 40
55
+ max = 90
56
+ 100.times do
57
+ t = Date.today
58
+ date_min = Date.new(t.year - min, t.month, t.day)
59
+ date_max = Date.new(t.year - max, t.month, t.day)
60
+ birthday = @tester.birthday(min, max)
61
+ assert birthday > date_max, "Expect > \"#{date_max}\", but got #{birthday}"
62
+ assert birthday < date_min, "Expect > \"#{date_max}\", but got #{birthday}"
63
+ end
64
+ end
65
+
66
+ def test_default_birthday
67
+ min = 10
68
+ max = 65
69
+ 100.times do
70
+ t = Date.today
71
+ date_min = Date.new(t.year - min, t.month, t.day)
72
+ date_max = Date.new(t.year - max, t.month, t.day)
73
+ birthday = @tester.birthday
74
+ assert birthday > date_max, "Expect > \"#{date_max}\", but got #{birthday}"
75
+ assert birthday < date_min, "Expect > \"#{date_max}\", but got #{birthday}"
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperHacker < Test::Unit::TestCase
4
+ def setup
5
+ @hacker = FactoryHelper::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,155 @@
1
+ # coding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
3
+
4
+ class TestFactoryHelperInternet < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @tester = FactoryHelper::Internet
8
+ end
9
+
10
+ def test_email
11
+ assert @tester.email.match(/.+@.+\.\w+/)
12
+ end
13
+
14
+ def test_localized_email
15
+ I18n.available_locales.each do |locale|
16
+ I18n.with_locale(locale) do
17
+ email= @tester.email
18
+ raise "#{locale} localized email: #{email}" unless email.match(/.+@.+\..+/)
19
+ end
20
+ end
21
+ end
22
+
23
+ def test_free_email
24
+ assert @tester.free_email.match(/.+@(gmail|hotmail|yahoo)\.com/)
25
+ end
26
+
27
+ def test_safe_email
28
+ assert @tester.safe_email.match(/.+@example.(com|net|org)/)
29
+ end
30
+
31
+ def test_user_name
32
+ assert @tester.user_name.match(/[a-z]+((_|\.)[a-z]+)?/)
33
+ end
34
+
35
+ def test_user_name_with_string_arg
36
+ assert @tester.user_name('bo peep').match(/(bo(_|\.)peep|peep(_|\.)bo)/)
37
+ end
38
+
39
+ def test_user_name_with_integer_arg
40
+ (1..32).each do |min_length|
41
+ assert @tester.user_name(min_length).length >= min_length
42
+ end
43
+ end
44
+
45
+ def test_user_name_with_closed_range_arg
46
+ (1..32).each do |min_length|
47
+ (min_length..32).each do |max_length|
48
+ l = @tester.user_name((min_length..max_length)).length
49
+ assert l >= min_length
50
+ assert l <= max_length
51
+ end
52
+ end
53
+ end
54
+
55
+ def test_user_name_with_open_range_arg
56
+ (1..32).each do |min_length|
57
+ (min_length+1..33).each do |max_length|
58
+ l = @tester.user_name((min_length...max_length)).length
59
+ assert l >= min_length
60
+ assert l <= max_length-1
61
+ end
62
+ end
63
+ end
64
+
65
+ def test_user_name_with_range_and_separators
66
+ (1..32).each do |min_length|
67
+ (min_length+1..33).each do |max_length|
68
+ u = @tester.user_name((min_length...max_length), %w(=))
69
+ assert u.length.between? min_length, max_length-1
70
+ assert u.match(/\A[a-z]+((=)?[a-z]*)*\z/)
71
+ end
72
+ end
73
+ end
74
+
75
+ def test_password
76
+ assert @tester.password.match(/\w{3}/)
77
+ end
78
+
79
+ def test_password_with_integer_arg
80
+ (1..32).each do |min_length|
81
+ assert @tester.password(min_length).length >= min_length
82
+ end
83
+ end
84
+
85
+ def test_password_max_with_integer_arg
86
+ (1..32).each do |min_length|
87
+ max_length = min_length + 4
88
+ assert @tester.password(min_length, max_length).length <= max_length
89
+ end
90
+ end
91
+
92
+ def test_domain_name
93
+ assert @tester.domain_name.match(/\w+\.\w+/)
94
+ end
95
+
96
+ def test_domain_word
97
+ assert @tester.domain_word.match(/^\w+$/)
98
+ end
99
+
100
+ def test_domain_suffix
101
+ assert @tester.domain_suffix.match(/^\w+(\.\w+)?/)
102
+ end
103
+
104
+ def test_ip_v4_address
105
+ assert_equal 3, @tester.ip_v4_address.count('.')
106
+
107
+ 1000.times do
108
+ assert @tester.ip_v4_address.split('.').map{|octet| octet.to_i}.max <= 255
109
+ end
110
+ end
111
+
112
+ def test_mac_address
113
+ assert_equal 5, @tester.mac_address.count(':')
114
+ assert_equal 5, @tester.mac_address("").count(':')
115
+
116
+ 1000.times do
117
+ assert @tester.mac_address.split(':').map{|d| d.to_i(16)}.max <= 255
118
+ end
119
+
120
+ assert @tester.mac_address("fa:fa:fa").start_with?("fa:fa:fa")
121
+ assert @tester.mac_address("01:02").start_with?("01:02")
122
+ end
123
+
124
+ def test_ip_v6_address
125
+ assert_equal 7, @tester.ip_v6_address.count(':')
126
+
127
+ 1000.times do
128
+ assert @tester.ip_v6_address.split('.').map{|h| "0x#{h}".hex}.max <= 65535
129
+ end
130
+ end
131
+
132
+ def test_slug
133
+ assert @tester.slug.match(/^[a-z]+(_|\.|\-)[a-z]+$/)
134
+ end
135
+
136
+ def test_slug_with_content_arg
137
+ assert @tester.slug('Foo bAr baZ').match(/^foo(_|\.|\-)bar(_|\.|\-)baz$/)
138
+ end
139
+
140
+ def test_slug_with_glue_arg
141
+ assert @tester.slug(nil, '+').match(/^[a-z]+\+[a-z]+$/)
142
+ end
143
+
144
+ def test_url
145
+ assert @tester.url('domain.com', '/username').match(/^http:\/\/domain\.com\/username$/)
146
+ end
147
+
148
+ def test_device_token
149
+ assert_equal 64, @tester.device_token.size
150
+ end
151
+
152
+ def test_fix_umlauts
153
+ assert_equal "aeoeuess", FactoryHelper::Internet.fix_umlauts('äöüß')
154
+ end
155
+ end