ffaker 2.1.0 → 2.2.0

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