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,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