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,87 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFactoryHelperLorem < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = FactoryHelper::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
+ # FactoryHelper::Lorem.word generates random word from standart wordlist
41
+ def test_word
42
+ @tester = FactoryHelper::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,54 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperName < Test::Unit::TestCase
4
+
5
+ def setup
6
+ FactoryHelper::Config.locale= nil
7
+ @genderized_en_test_locales= [:en, :'en-AU', :'en-au-ocker', :'en-CA', :'en-GB', :'en-IND', :'en-NEP', :'en-US']
8
+ @tester = FactoryHelper::Name
9
+ end
10
+
11
+ def teardown
12
+ FactoryHelper::Config.locale= nil
13
+ end
14
+
15
+ def test_name
16
+ assert @tester.name.match(/(\w+\.? ?){2,3}/)
17
+ end
18
+
19
+ def test_prefix
20
+ assert @tester.prefix.match(/[A-Z][a-z]+\.?/)
21
+ end
22
+
23
+ def test_suffix
24
+ assert @tester.suffix.match(/[A-Z][a-z]*\.?/)
25
+ end
26
+
27
+ def test_genderized_name_locales
28
+ @genderized_en_test_locales.each do |locale|
29
+ FactoryHelper::Config.locale= locale
30
+ test_female_first_name
31
+ test_male_first_name
32
+ end
33
+ end
34
+
35
+ def test_genderized_name
36
+ test_female_first_name
37
+ test_male_first_name
38
+ end
39
+
40
+ private
41
+
42
+ def test_female_first_name
43
+ 384.times do
44
+ assert @tester.female_first_name.match(/\A[A-Z][\w']+\z/)
45
+ end
46
+ end
47
+
48
+ def test_male_first_name
49
+ 96.times do
50
+ assert @tester.male_first_name.match(/\A[A-Z][\w']+\z/)
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,77 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperNumber < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::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,45 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class TestFactoryHelperSlackEmoji < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = FactoryHelper::SlackEmoji
7
+ @emoticon_regex= /^:([\w-]+):$/
8
+ end
9
+
10
+ def test_people
11
+ assert @tester.people.match(@emoticon_regex)
12
+ end
13
+
14
+ def test_nature
15
+ assert @tester.nature.match(@emoticon_regex)
16
+ end
17
+
18
+ def test_food_and_drink
19
+ assert @tester.food_and_drink.match(@emoticon_regex)
20
+ end
21
+
22
+ def test_celebration
23
+ assert @tester.celebration.match(@emoticon_regex)
24
+ end
25
+
26
+ def test_activity
27
+ assert @tester.activity.match(@emoticon_regex)
28
+ end
29
+
30
+ def test_travel_and_places
31
+ assert @tester.travel_and_places.match(@emoticon_regex)
32
+ end
33
+
34
+ def test_objects_and_symbols
35
+ assert @tester.objects_and_symbols.match(@emoticon_regex)
36
+ end
37
+
38
+ def test_custom
39
+ assert @tester.custom.match(@emoticon_regex)
40
+ end
41
+
42
+ def test_emoji
43
+ assert @tester.emoji.match(@emoticon_regex)
44
+ end
45
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFactoryHelperStreet < 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", FactoryHelper::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/, FactoryHelper::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\)/, FactoryHelper::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+/, FactoryHelper::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", FactoryHelper::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 TestFactoryHelperTeam < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @tester = FactoryHelper::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 TestFactoryHelperTime < Test::Unit::TestCase
4
+ def setup
5
+ @tester = FactoryHelper::Time
6
+ @time_ranges = FactoryHelper::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 FactoryHelper::Time::TIME_RANGES[:#{period}] range"
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,57 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ module FactoryHelper
4
+ class Foodie < Base
5
+ flexible :chow
6
+ end
7
+ end
8
+
9
+ class TestFlexible < Test::Unit::TestCase
10
+
11
+ def setup
12
+ I18n.reload!
13
+ I18n.backend.store_translations(:xx, :factory_helper => {:chow => {:yummie => [:fudge, :chocolate, :caramel], :taste => "delicious"}})
14
+ I18n.backend.store_translations(:home, :factory_helper => {:address => {:birthplace => [:bed, :hospital, :airplane]}})
15
+ I18n.backend.store_translations(:kindergarden, :factory_helper => {:name => {:girls_name => [:alice, :cheryl, :tatiana]}})
16
+ I18n.backend.store_translations(:work, :factory_helper => {:company => {:do_stuff => [:work, :work, :work]}})
17
+ end
18
+
19
+ def test_flexible_multiple_values
20
+ I18n.with_locale(:xx) do
21
+ actual = FactoryHelper::Foodie.yummie
22
+ assert [:fudge, :chocolate, :caramel].include? actual
23
+ end
24
+ end
25
+
26
+ def test_flexible_single_value
27
+ I18n.with_locale(:xx) do
28
+ assert_equal "delicious", FactoryHelper::Foodie.taste
29
+ end
30
+ end
31
+
32
+ def test_raises_no_method_error
33
+ I18n.with_locale(:xx) do
34
+ assert_raise(NoMethodError) do
35
+ FactoryHelper::Foodie.eeew
36
+ end
37
+ end
38
+ end
39
+
40
+ def test_address_is_flexible
41
+ I18n.with_locale(:home) do
42
+ assert [:bed, :hospital, :airplane].include? FactoryHelper::Address.birthplace
43
+ end
44
+ end
45
+
46
+ def test_name_is_flexible
47
+ I18n.with_locale(:kindergarden) do
48
+ assert [:alice, :cheryl, :tatiana].include? FactoryHelper::Name.girls_name
49
+ end
50
+ end
51
+
52
+ def test_company_is_flexible
53
+ I18n.with_locale(:work) do
54
+ assert FactoryHelper::Company.do_stuff == :work
55
+ end
56
+ end
57
+ end