ffaker 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +32 -21
  3. data/README.md +16 -16
  4. data/REFERENCE.md +925 -646
  5. data/ffaker.gemspec +73 -5
  6. data/lib/ffaker.rb +1 -1
  7. data/lib/ffaker/address.rb +4 -0
  8. data/lib/ffaker/address_ch.rb +21 -0
  9. data/lib/ffaker/address_ch_de.rb +16 -0
  10. data/lib/ffaker/address_ch_fr.rb +16 -0
  11. data/lib/ffaker/address_ch_it.rb +16 -0
  12. data/lib/ffaker/address_da.rb +2 -4
  13. data/lib/ffaker/address_in.rb +56 -0
  14. data/lib/ffaker/address_ru.rb +39 -0
  15. data/lib/ffaker/address_ua.rb +58 -0
  16. data/lib/ffaker/avatar.rb +3 -5
  17. data/lib/ffaker/cheesy_lingo.rb +39 -0
  18. data/lib/ffaker/color_ua.rb +12 -0
  19. data/lib/ffaker/data/address/time_zone +128 -0
  20. data/lib/ffaker/data/address_ch/canton_abbr +26 -0
  21. data/lib/ffaker/data/address_chde/canton +26 -0
  22. data/lib/ffaker/data/address_chfr/canton +26 -0
  23. data/lib/ffaker/data/address_chit/canton +26 -0
  24. data/lib/ffaker/data/address_da/city +3 -3
  25. data/lib/ffaker/data/address_da/kommune +0 -4
  26. data/lib/ffaker/data/address_in/state +29 -0
  27. data/lib/ffaker/data/address_in/state_abbr +29 -0
  28. data/lib/ffaker/data/address_in/union_territory +7 -0
  29. data/lib/ffaker/data/address_in/union_territory_abbr +7 -0
  30. data/lib/ffaker/data/address_ru/city +74 -0
  31. data/lib/ffaker/data/address_ru/province +83 -0
  32. data/lib/ffaker/data/address_ru/street +49 -0
  33. data/lib/ffaker/data/address_ua/city +57 -0
  34. data/lib/ffaker/data/address_ua/country +193 -0
  35. data/lib/ffaker/data/address_ua/province +27 -0
  36. data/lib/ffaker/data/address_ua/street +13 -0
  37. data/lib/ffaker/data/cheesy_lingo/cheesy_phrases +54 -0
  38. data/lib/ffaker/data/cheesy_lingo/cheesy_words +34 -0
  39. data/lib/ffaker/data/color_ua/names_list +114 -0
  40. data/lib/ffaker/data/lorem_ua/capital_chars +33 -0
  41. data/lib/ffaker/data/lorem_ua/chars +33 -0
  42. data/lib/ffaker/data/lorem_ua/words +362 -0
  43. data/lib/ffaker/data/music/albums +91 -0
  44. data/lib/ffaker/data/music/artists +100 -0
  45. data/lib/ffaker/data/music/genres +20 -0
  46. data/lib/ffaker/data/music/songs +100 -0
  47. data/lib/ffaker/data/name_da/female_first_names +291 -480
  48. data/lib/ffaker/data/name_da/male_first_names +294 -383
  49. data/lib/ffaker/data/name_ua/first_names_female +193 -0
  50. data/lib/ffaker/data/name_ua/first_names_male +195 -0
  51. data/lib/ffaker/data/name_ua/last_names_female +230 -0
  52. data/lib/ffaker/data/name_ua/last_names_male +239 -0
  53. data/lib/ffaker/data/name_ua/middle_names_female +116 -0
  54. data/lib/ffaker/data/name_ua/middle_names_male +116 -0
  55. data/lib/ffaker/data/vehicle/displacements_list +21 -0
  56. data/lib/ffaker/data/vehicle/fuel_types_list +6 -0
  57. data/lib/ffaker/data/vehicle/transmissions_list +4 -0
  58. data/lib/ffaker/data/vehicle/upholstery_list +5 -0
  59. data/lib/ffaker/internet.rb +20 -20
  60. data/lib/ffaker/lorem_ua.rb +59 -0
  61. data/lib/ffaker/music.rb +24 -0
  62. data/lib/ffaker/name_da.rb +17 -28
  63. data/lib/ffaker/name_ja.rb +2 -4
  64. data/lib/ffaker/name_ua.rb +59 -0
  65. data/lib/ffaker/phone_number.rb +4 -1
  66. data/lib/ffaker/phone_number_br.rb +74 -0
  67. data/lib/ffaker/phone_number_ch.rb +46 -0
  68. data/lib/ffaker/phone_number_da.rb +3 -3
  69. data/lib/ffaker/string.rb +14 -6
  70. data/lib/ffaker/vehicle.rb +26 -0
  71. data/test/test_address.rb +4 -0
  72. data/test/test_address_ch.rb +13 -0
  73. data/test/test_address_ch_de.rb +9 -0
  74. data/test/test_address_ch_fr.rb +9 -0
  75. data/test/test_address_ch_it.rb +11 -0
  76. data/test/test_address_da.rb +10 -10
  77. data/test/test_address_in.rb +50 -0
  78. data/test/test_address_ru.rb +30 -0
  79. data/test/test_address_ua.rb +49 -0
  80. data/test/test_avatar.rb +7 -6
  81. data/test/test_cheesy_lingo.rb +37 -0
  82. data/test/test_color_ua.rb +9 -0
  83. data/test/test_internet.rb +11 -3
  84. data/test/test_lorem_ua.rb +45 -0
  85. data/test/test_music.rb +21 -0
  86. data/test/test_name_br.rb +1 -1
  87. data/test/test_name_da.rb +48 -0
  88. data/test/test_name_ja.rb +32 -1
  89. data/test/test_name_ua.rb +59 -0
  90. data/test/test_phone_number.rb +8 -3
  91. data/test/test_phone_number_br.rb +47 -0
  92. data/test/test_phone_number_da.rb +39 -0
  93. data/test/test_string.rb +6 -0
  94. data/test/test_time.rb +2 -2
  95. data/test/test_vehicle.rb +24 -0
  96. data/test/test_venue.rb +1 -1
  97. metadata +86 -5
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestColorUA < Test::Unit::TestCase
6
+ def test_name
7
+ assert_match /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/, FFaker::ColorUA.name
8
+ end
9
+ end
@@ -58,15 +58,23 @@ class TestFakerInternet < Test::Unit::TestCase
58
58
  end
59
59
 
60
60
  def test_ip_v4_address
61
- assert @tester.ip_v4_address.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
61
+ assert_match(/\A(?:\d{1,3}\.){3}\d{1,3}\z/, @tester.ip_v4_address)
62
62
  end
63
63
 
64
64
  def test_slug
65
- assert @tester.slug.match(/^[a-z]+(_|\.|\-)[a-z]+$/)
65
+ assert_match(/\A[a-z]+[_.-][a-z]+\z/, @tester.slug)
66
+ end
67
+
68
+ def test_slug_with_input_words
69
+ assert_not_match(/&/, @tester.slug("Input Words&&Symbols"))
70
+ end
71
+
72
+ def test_slug_with_specified_glue
73
+ assert_match(/\A[a-z]+-[a-z]+\z/, @tester.slug(nil, "-"))
66
74
  end
67
75
 
68
76
  def test_password
69
- assert @tester.password.match(/[a-z]+/)
77
+ assert_match(/\A[a-z]+\z/, @tester.password)
70
78
  end
71
79
 
72
80
  def test_password_min_length
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestLoremUA < Test::Unit::TestCase
6
+ SENTENCE_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s\.\!\?,]+\z/
7
+ WORDS_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/
8
+ WORD_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-]+\z/
9
+
10
+ def setup
11
+ @tester = FFaker::LoremUA
12
+ end
13
+
14
+ def test_word
15
+ assert_match WORD_MATCHER, @tester.word
16
+ end
17
+
18
+ def test_words
19
+ @tester.words(10).each do |word|
20
+ assert_match WORD_MATCHER, word
21
+ end
22
+ assert_match WORDS_MATCHER, @tester.words.join(" ")
23
+ end
24
+
25
+ def test_sentence
26
+ assert_match SENTENCE_MATCHER, @tester.sentence(20)
27
+ assert_match SENTENCE_MATCHER, @tester.sentence(4)
28
+ end
29
+
30
+ def test_sentences
31
+ @tester.sentences(10).each do |sentence|
32
+ assert_match SENTENCE_MATCHER, sentence
33
+ end
34
+ end
35
+
36
+ def test_paragraph
37
+ assert_match SENTENCE_MATCHER, @tester.paragraph
38
+ end
39
+
40
+ def test_paragraphs
41
+ @tester.paragraphs.each do |paragraph|
42
+ assert_match SENTENCE_MATCHER, paragraph
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestMusic < Test::Unit::TestCase
6
+ def test_genre
7
+ assert_match /[A-z]|\W|\&\/+/, FFaker::Music.genre
8
+ end
9
+
10
+ def test_album
11
+ assert_match /\s|[A-z]|\W|\d|\'|\?+/, FFaker::Music.album
12
+ end
13
+
14
+ def test_artist
15
+ assert_match /\s|[A-z]|\W|\d|\'|\?|\&|\+|\.|\-+/, FFaker::Music.artist
16
+ end
17
+
18
+ def test_song
19
+ assert_match /\s|[A-z]|\W|\d|\'|\?|\&|\+|\.|\-+/, FFaker::Music.song
20
+ end
21
+ end
@@ -8,7 +8,7 @@ class TestFakerNameBR < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_name
11
- assert_match(/\A[[:alpha:]]+ [[:alpha:]]+\z/, @tester.name)
11
+ assert_match(/\A[a-zA-ZéúôóíáÍã\s]+\z/, @tester.name)
12
12
  end
13
13
 
14
14
  def test_name_with_prefix
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestFakerNameDA < Test::Unit::TestCase
6
+ RU_REGEX = /[А-Я][а-я]+/
7
+
8
+ def setup
9
+ @tester = FFaker::NameDA
10
+ end
11
+
12
+ def test_name
13
+ assert_raise { @tester.name(:hahaha) }
14
+ end
15
+
16
+ def test_any_name
17
+ assert @tester.any_name.count(' ') < 3
18
+ end
19
+
20
+ def test_male_name
21
+ regexp = %r(#{@tester::MALE_FIRST_NAMES.join('|')})
22
+ assert @tester.male_name.count(' ') < 3
23
+ assert_match regexp, @tester.male_name
24
+ end
25
+
26
+ def test_female_name
27
+ regexp = %r(#{@tester::FEMALE_FIRST_NAMES.join('|')})
28
+ assert @tester.female_name.count(' ') < 3
29
+ assert_match regexp, @tester.female_name
30
+ end
31
+
32
+ def test_first_name
33
+ assert_include @tester::MALE_FIRST_NAMES, @tester.first_name(:male)
34
+ assert_include @tester::FEMALE_FIRST_NAMES, @tester.first_name(:female)
35
+ first_names = @tester::MALE_FIRST_NAMES + @tester::FEMALE_FIRST_NAMES
36
+ assert_include first_names, @tester.first_name(:any)
37
+ assert_include first_names, @tester.first_name
38
+ assert_raise { @tester.first_name(:hahaha) }
39
+ end
40
+
41
+ def test_last_name
42
+ assert_match /\A['a-z]+\z/i, @tester.last_name
43
+ end
44
+
45
+ def test_prefix
46
+ assert_match /\A(?:Hr|Fr|Dr|Prof)\.\Z/, @tester.prefix
47
+ end
48
+ end
@@ -3,11 +3,42 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestFakerNameJA < Test::Unit::TestCase
6
+ class << self
7
+ def startup
8
+ FFaker::NameJA.const_set(:FIRST_NAMES, %w(あきら フミ 三郎))
9
+ FFaker::NameJA.const_set(:LAST_NAMES, %w(佐藤 高橋 佐々木))
10
+ end
11
+
12
+ def shutdown
13
+ FFaker::NameJA.class_eval { remove_const(:FIRST_NAMES) }
14
+ FFaker::NameJA.class_eval { remove_const(:LAST_NAMES) }
15
+ end
16
+ end
17
+
6
18
  def setup
7
19
  @tester = FFaker::NameJA
8
20
  end
9
21
 
22
+ def test_first_name
23
+ assert_include(@tester::FIRST_NAMES, @tester.first_name)
24
+ end
25
+
26
+ def test_last_name
27
+ assert_include(@tester::LAST_NAMES, @tester.last_name)
28
+ end
29
+
30
+ def test_last_first
31
+ assert_last_first(@tester.last_first)
32
+ end
33
+
10
34
  def test_name
11
- assert @tester.name.length >= 2
35
+ assert_last_first(@tester.name)
36
+ end
37
+
38
+ private
39
+
40
+ def assert_last_first(actual)
41
+ last_first_regexp = /(#{@tester::LAST_NAMES.join('|')})(#{@tester::FIRST_NAMES.join('|')})/
42
+ assert_match(last_first_regexp, actual)
12
43
  end
13
44
  end
@@ -0,0 +1,59 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestNameUA < Test::Unit::TestCase
6
+ def setup
7
+ @tester = FFaker::NameUA
8
+
9
+ @single_word_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’\-]+\z/
10
+ @multiple_words_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/
11
+ end
12
+
13
+ def test_first_name_male
14
+ assert_include @tester::FIRST_NAMES_MALE, (@tester.first_name_male)
15
+ assert_match @single_word_name_regexp, @tester.first_name_male
16
+ end
17
+
18
+ def test_first_name_female
19
+ assert_include @tester::FIRST_NAMES_FEMALE, (@tester.first_name_female)
20
+ assert_match @single_word_name_regexp, @tester.first_name_female
21
+ end
22
+
23
+ def test_middle_name_male
24
+ assert_include @tester::MIDDLE_NAMES_MALE, (@tester.middle_name_male)
25
+ assert_match @single_word_name_regexp, @tester.middle_name_male
26
+ end
27
+
28
+ def test_middle_name_female
29
+ assert_include @tester::MIDDLE_NAMES_FEMALE, (@tester.middle_name_female)
30
+ assert_match @single_word_name_regexp, @tester.middle_name_female
31
+ end
32
+
33
+ def test_last_name_male
34
+ assert_include @tester::LAST_NAMES_MALE, (@tester.last_name_male)
35
+ assert_match @single_word_name_regexp, @tester.last_name_male
36
+ end
37
+
38
+ def test_last_name_female
39
+ assert_include @tester::LAST_NAMES_FEMALE, (@tester.last_name_female)
40
+ assert_match @single_word_name_regexp, @tester.last_name_female
41
+ end
42
+
43
+ def test_first_name
44
+ assert_include @tester::FIRST_NAMES, (@tester.first_name)
45
+ assert_match @single_word_name_regexp, @tester.first_name
46
+ end
47
+
48
+ def test_last_name
49
+ assert_include @tester::LAST_NAMES, (@tester.last_name)
50
+ assert_match @single_word_name_regexp, @tester.last_name
51
+ end
52
+
53
+ def test_name
54
+ 8.times do
55
+ assert_match @multiple_words_name_regexp, @tester.name
56
+ assert_include [1, 2, 3], @tester.name.split(' ').count
57
+ end
58
+ end
59
+ end
@@ -7,16 +7,21 @@ class TestPhoneNumer < Test::Unit::TestCase
7
7
  assert_match /\d{3}[. -]\d{3}/, FFaker::PhoneNumber.phone_number
8
8
  end
9
9
 
10
+ def test_area_code
11
+ assert_not_match /\A\d11\z/, FFaker::PhoneNumber.area_code.to_s
12
+ assert_match /\A\d{3}\z/, FFaker::PhoneNumber.area_code.to_s
13
+ end
14
+
10
15
  def test_short_phone_number
11
- assert_match /\d{3}-\d{3}-\d{4}/, FFaker::PhoneNumber.short_phone_number
16
+ assert_match /\A\d{3}-\d{3}-\d{4}\z/, FFaker::PhoneNumber.short_phone_number
12
17
  end
13
18
 
14
19
  def test_imei
15
- assert_match /^\d{15}$/, FFaker::PhoneNumber.imei
20
+ assert_match /\A\d{15}\z/, FFaker::PhoneNumber.imei
16
21
  end
17
22
 
18
23
  def test_imei_with_sn
19
24
  sn = rand(1_000_000)
20
- assert_match /^\d{8}#{sprintf('%06d', sn)}\d{1}$/, FFaker::PhoneNumber.imei(sn)
25
+ assert_match /\A\d{8}#{sprintf('%06d', sn)}\d{1}\z/, FFaker::PhoneNumber.imei(sn)
21
26
  end
22
27
  end
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ # Author: Gustavo Souza https://github.com/gustavor-souza
6
+ class TestPhoneNumberBR < Test::Unit::TestCase
7
+ def setup
8
+ @tester = FFaker::PhoneNumberBR
9
+ end
10
+
11
+ def test_phone_number
12
+ 10.times do
13
+ assert_match /\A[1-9]\d\s?9?\d{4}-?\d{4}\z/, @tester.phone_number
14
+ end
15
+ end
16
+
17
+ def test_home_work_phone_number
18
+ assert_match /\A[1-9]\d\s?[2-5]\d{3}-?\d{4}\z/,
19
+ @tester.home_work_phone_number
20
+ end
21
+
22
+ def test_mobile_phone_number
23
+ assert_match /\A[1-9]\d\s?([6-9]|9[6-9])\d{3}-?\d{4}\z/,
24
+ @tester.mobile_phone_number
25
+ end
26
+
27
+ def test_international_phone_number
28
+ 10.times do
29
+ assert_match /\A\+55\s?[1-9]\d\s?9?\d{4}-?\d{4}\z/,
30
+ @tester.international_phone_number
31
+ end
32
+ end
33
+
34
+ def test_international_mobile_phone_number
35
+ assert_match /\A\+55\s?[1-9]\d\s?([6-9]|9[6-9])\d{3}-?\d{4}\z/,
36
+ @tester.international_mobile_phone_number
37
+ end
38
+
39
+ def test_international_home_work_phone_number
40
+ assert_match /\A\+55\s?[1-9]\d\s?[2-5]\d{3}-?\d{4}\z/,
41
+ @tester.international_home_work_phone_number
42
+ end
43
+
44
+ def test_country_code
45
+ assert_match '+55', @tester.country_code
46
+ end
47
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ # Author: wiseleyb<wiseleyb@gmail.com>
6
+ class TestPhoneNumberDA < Test::Unit::TestCase
7
+ def setup
8
+ @tester = FFaker::PhoneNumberDA
9
+ end
10
+
11
+ def test_home_work_phone_number
12
+ assert_match /\A\d{8}\z/, @tester.home_work_phone_number
13
+ end
14
+
15
+ def test_mobile_phone_number
16
+ assert_match /\A\d{8}\z/, @tester.mobile_phone_number
17
+ end
18
+
19
+ def test_phone_number
20
+ assert_match /\A\d{8}\z/, @tester.phone_number
21
+ end
22
+
23
+ def test_country_code
24
+ assert_equal '+45', @tester.country_code
25
+ end
26
+
27
+ def test_international_mobile_phone_number
28
+ assert_match /\A\+45 \d{8}\z/, @tester.international_mobile_phone_number
29
+ end
30
+
31
+ def test_international_home_work_phone_number
32
+ assert_match /\A\+45 \d{8}\z/, @tester.international_home_work_phone_number
33
+ end
34
+
35
+ def test_international_phone_number
36
+ assert_match /\A\+45 \d{8}\z/, @tester.international_phone_number
37
+ end
38
+
39
+ end
@@ -78,4 +78,10 @@ class TestString < Test::Unit::TestCase
78
78
  def test_set_star
79
79
  assert_match(/\A[abc]*\z/, FS.from_regexp(/[abc]*/))
80
80
  end
81
+
82
+ def test_braces
83
+ assert_equal "a" * 13, FS.from_regexp(/a{13}/)
84
+ assert_match(/\A[abc]{13}\z/, FS.from_regexp(/[abc]{13}/))
85
+ assert_match(/\A\w{13}\z/, FS.from_regexp(/\w{13}/))
86
+ end
81
87
  end
@@ -8,12 +8,12 @@ class TestFakerTime < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_date
11
- date_regex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-|+]\d{4}$/
11
+ date_regex = /\A\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-|+]\d{4}\z/
12
12
  assert_match date_regex, @tester.date.to_s
13
13
  end
14
14
 
15
15
  def test_month
16
- month_regex = /(January|February|March|April|May|June|July|August|September|October|November|December)/
16
+ month_regex = /\A(?:January|February|March|April|May|June|July|August|September|October|November|December)\z/
17
17
  assert_match month_regex, @tester.month
18
18
  end
19
19
  end
@@ -38,4 +38,28 @@ class TestVehicle < Test::Unit::TestCase
38
38
  def test_drivetrain
39
39
  assert_match /\A[a-z0-9]+\z/i, FFaker::Vehicle.drivetrain
40
40
  end
41
+
42
+ def test_transmission
43
+ assert_match /\A[ a-z0-9]+\z/i, FFaker::Vehicle.transmission
44
+ end
45
+
46
+ def test_transmission_abbr
47
+ assert_match /\A[A-Z]{2,3}\z/, FFaker::Vehicle.transmission_abbr
48
+ end
49
+
50
+ def test_engine_cylinders
51
+ assert_match /\A[a-z0-9]+\z/i, FFaker::Vehicle.engine_cylinders
52
+ end
53
+
54
+ def test_engine_displacement
55
+ assert_match /\A\d{1,2}\.\d\z/, FFaker::Vehicle.engine_displacement
56
+ end
57
+
58
+ def test_fuel_type
59
+ assert_match /\A[ a-z0-9\(\)]+\z/i, FFaker::Vehicle.fuel_type
60
+ end
61
+
62
+ def test_interior_upholstery
63
+ assert_match /\A[ a-z0-9]+\z/i, FFaker::Vehicle.interior_upholstery
64
+ end
41
65
  end
@@ -4,6 +4,6 @@ require 'helper'
4
4
 
5
5
  class TestVenue < Test::Unit::TestCase
6
6
  def test_name
7
- assert_match /1\+|[ a-z]+/i, FFaker::Venue.name
7
+ assert_match /\A[., a-z]+\z/i, FFaker::Venue.name
8
8
  end
9
9
  end