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,46 @@
1
+ # encoding: utf-8
2
+
3
+ module FFaker
4
+ module PhoneNumberCH
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ COUNTRY_PREFIX = %w[+41 0041 0]
9
+ AREA_PREFIX = %w[21 22 24 26 27 31 32 33 34 41 43 44 51 52 56 58 61 62 71 81 91]
10
+ MOBILE_PREFIX = %w[74 75 76 77 78 79]
11
+ FREE_PHONE_PREFIX = %w[800]
12
+ SHARED_COST_PREFIX = %w[840 842 844 848]
13
+ PREMIUM_RATE_PREFIX = %w[900 901 906]
14
+ PHONE_NUMBER = ['#######', ' ### ## ##']
15
+
16
+ def phone_number
17
+ case rand(5)
18
+ when 0 then home_work_phone_number
19
+ when 1 then mobile_phone_number
20
+ when 2 then free_phone_number
21
+ when 3 then shared_cost_phone_number
22
+ when 4 then premium_rate_phone_number
23
+ end
24
+ end
25
+
26
+ def home_work_phone_number
27
+ FFaker.numerify "#{COUNTRY_PREFIX.sample}#{AREA_PREFIX.sample}#{PHONE_NUMBER.sample}"
28
+ end
29
+
30
+ def mobile_phone_number
31
+ FFaker.numerify "#{COUNTRY_PREFIX.sample}#{MOBILE_PREFIX.sample}#{PHONE_NUMBER.sample}"
32
+ end
33
+
34
+ def free_phone_number
35
+ FFaker.numerify "#{COUNTRY_PREFIX.sample}#{FREE_PHONE_PREFIX.sample}#{PHONE_NUMBER.sample}"
36
+ end
37
+
38
+ def shared_cost_phone_number
39
+ FFaker.numerify "#{COUNTRY_PREFIX.sample}#{SHARED_COST_PREFIX.sample}#{PHONE_NUMBER.sample}"
40
+ end
41
+
42
+ def premium_rate_phone_number
43
+ FFaker.numerify "#{COUNTRY_PREFIX.sample}#{PREMIUM_RATE_PREFIX.sample}#{PHONE_NUMBER.sample}"
44
+ end
45
+ end
46
+ end
@@ -23,11 +23,11 @@ module FFaker
23
23
 
24
24
  # generates mobile or home/work number
25
25
  def phone_number
26
- FFaker.numerify("########")
26
+ FFaker.numerify('########')
27
27
  end
28
28
 
29
29
  def country_code
30
- "+45"
30
+ '+45'
31
31
  end
32
32
 
33
33
  def international_mobile_phone_number
@@ -39,7 +39,7 @@ module FFaker
39
39
  end
40
40
 
41
41
  def international_phone_number
42
- FFaker.numerify("#{country_code} #{phone_number}")
42
+ "#{country_code} #{phone_number}"
43
43
  end
44
44
  end
45
45
  end
@@ -47,21 +47,29 @@ module FFaker
47
47
  end
48
48
 
49
49
  def process_token(tokens)
50
- return '' if tokens.empty?
50
+ return "" if tokens.empty?
51
51
 
52
52
  token = tokens.shift
53
53
 
54
54
  case token
55
- when '?' then
55
+ when "?" then
56
56
  # TODO: Let ? generate nothing
57
- '' # We already printed its target
58
- when '+' then
57
+ "" # We already printed its target
58
+ when "+" then
59
59
  tokens.unshift(token) if rand(2) == 1 # Leave the `+` on to run again
60
60
  process_token(@last_token) # Run the last one at least once
61
- when '*' then
61
+ when "*" then
62
62
  tokens.unshift(token) if rand(2) == 1 # Leave the `*` on to run again
63
- return '' if rand(2) == 1 # Or maybe do nothing
63
+ return "" if rand(2) == 1 # Or maybe do nothing
64
64
  process_token(@last_token) # Else run the last one again
65
+ when "{" then
66
+ number = ""
67
+ while (ch = tokens.shift) != "}"
68
+ number << ch
69
+ end
70
+ number = number.to_i - 1
71
+ t = @last_token.dup
72
+ number.times.map { process_token(t.dup) }.join
65
73
  else
66
74
  generate_token token, tokens
67
75
  end
@@ -11,6 +11,8 @@ module FFaker
11
11
  beautiful bright calm dangerous dark dull fast magnetic magnificent majestic melodic metallic
12
12
  mundane mute mysterious new pleasant pretty resonant royal slate soft tranquil vibrant weak
13
13
  ))
14
+ TRANSMISSIONS_ABBR = %w(AT MT AM CVT)
15
+ CYLINDERS = %w(2 5 6 8)
14
16
 
15
17
  def base_color
16
18
  FFaker::Color.name
@@ -45,5 +47,29 @@ module FFaker
45
47
  def year
46
48
  YEARS.sample
47
49
  end
50
+
51
+ def transmission
52
+ TRANSMISSIONS_LIST.sample
53
+ end
54
+
55
+ def transmission_abbr
56
+ TRANSMISSIONS_ABBR.sample
57
+ end
58
+
59
+ def engine_cylinders
60
+ CYLINDERS.sample
61
+ end
62
+
63
+ def engine_displacement
64
+ DISPLACEMENTS_LIST.sample
65
+ end
66
+
67
+ def fuel_type
68
+ FUEL_TYPES_LIST.sample
69
+ end
70
+
71
+ def interior_upholstery
72
+ UPHOLSTERY_LIST.sample
73
+ end
48
74
  end
49
75
  end
@@ -83,4 +83,8 @@ class TestAddress < Test::Unit::TestCase
83
83
  assert_match 'UA', FFaker::Address::country_code('Ukraine')
84
84
  assert_match /[A-Z]{2}/, FFaker::Address::country_code('Foo')
85
85
  end
86
+
87
+ def test_time_zone
88
+ assert_include FFaker::Address::TIME_ZONE, FFaker::Address::time_zone
89
+ end
86
90
  end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressCHCH < Test::Unit::TestCase
6
+ def test_ch_canton_abbr
7
+ assert_match /\A[A-Z]{2}\z/, FFaker::AddressCH.canton_abbr
8
+ end
9
+
10
+ def test_postal_code
11
+ assert_match /\A\d{4}\z/, FFaker::AddressCH.postal_code
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressCHFR < Test::Unit::TestCase
6
+ def test_ch_fr_canton
7
+ assert_match /\A[- a-zàâäèéêëîïôœùûüÿç]+\z/i, FFaker::AddressCHFR.canton
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressCHDE < Test::Unit::TestCase
6
+ def test_ch_de_canton
7
+ assert_match /\A[-. a-zæøåü]+\z/i, FFaker::AddressCHDE.canton
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressCHIT < Test::Unit::TestCase
6
+ def test_ch_it_canton
7
+ FFaker::AddressCHIT::CANTON.each do |canton|
8
+ assert_match /\A[- a-zàâ]+\z/i, canton
9
+ end
10
+ end
11
+ end
@@ -4,38 +4,38 @@ require 'helper'
4
4
 
5
5
  class TestAddressDA < Test::Unit::TestCase
6
6
  def test_zip_code
7
- assert_match /^\d{4}$/, FFaker::AddressDA.zip_code
7
+ assert_match /\A\d{4}\z/, FFaker::AddressDA.zip_code
8
8
  end
9
9
 
10
10
  def test_post_nr
11
- assert_match /^\d{4}$/, FFaker::AddressDA.post_nr
11
+ assert_match /\A\d{4}\z/, FFaker::AddressDA.post_nr
12
12
  end
13
13
 
14
14
  def test_state
15
- assert_match /[ a-z]/, FFaker::AddressDA.state
15
+ assert_match /\A[-ÆØÅæøåa-z]+\z/i, FFaker::AddressDA.state
16
16
  end
17
17
 
18
18
  def test_kommune
19
- assert_match /[ a-z]/, FFaker::AddressDA.kommune
19
+ assert_match /\A[-ÆØÅæøåa-z]+\z/i, FFaker::AddressDA.kommune
20
20
  end
21
21
 
22
- def region
23
- assert_match /[ a-z]/, FFaker::AddressDA.region
22
+ def test_region
23
+ assert_match /\A[ÆØÅæøåa-z]+\z/i, FFaker::AddressDA.region
24
24
  end
25
25
 
26
26
  def test_city
27
- assert_match /[ a-z]+/, FFaker::AddressDA.city
27
+ assert_match /\A[- ÆØÅæøåla-z]+\z/i, FFaker::AddressDA.city
28
28
  end
29
29
 
30
30
  def test_street_name
31
- assert_match /[ a-z]+/, FFaker::AddressDA.street_name
31
+ assert_match /\A[. éÆØÅæøåla-z0-9]+\z/i, FFaker::AddressDA.street_name
32
32
  end
33
33
 
34
34
  def test_street_address
35
- assert_match /[ a-z]+/, FFaker::AddressDA.street_address
35
+ assert_match /\A[. éÆØÅæøåla-z0-9]+\z/i, FFaker::AddressDA.street_address
36
36
  end
37
37
 
38
38
  def test_full_address
39
- assert_match /[ a-z]+/, FFaker::AddressDA.full_address
39
+ assert_match /\A[. éÆØÅæøåla-z0-9]+ DANMARK\z/i, FFaker::AddressDA.full_address
40
40
  end
41
41
  end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressININ < Test::Unit::TestCase
6
+ def test_in_state
7
+ assert_match /\A[A-Z][ A-Za-z]*\z/, FFaker::AddressIN.state
8
+ end
9
+
10
+ def test_in_state_abbr
11
+ assert_match /\A[A-Z]{2}\z/, FFaker::AddressIN.state_abbr
12
+ end
13
+
14
+ def test_in_union_territory
15
+ assert_match /\A[A-Z][ A-Za-z]*\z/, FFaker::AddressIN.union_territory
16
+ end
17
+
18
+ def test_in_union_territory_abbr
19
+ assert_match /\A[A-Z]{2}\z/, FFaker::AddressIN.union_territory_abbr
20
+ end
21
+
22
+ def test_in_state_and_union_territory
23
+ assert_match /\A[A-Z][ A-Za-z]*\z/, FFaker::AddressIN.state_and_union_territory
24
+ end
25
+
26
+ def test_in_state_and_union_territory_abbr
27
+ assert_match /\A[A-Z]{2}\z/, FFaker::AddressIN.state_and_union_territory_abbr
28
+ end
29
+
30
+ def test_pincode
31
+ assert_match /[0-9]{6}/, FFaker::AddressIN.pincode
32
+ end
33
+
34
+ def test_zip_code
35
+ assert_match /[0-9]{6}/, FFaker::AddressIN.pincode
36
+ end
37
+
38
+ def test_in_country
39
+ assert_equal "India", FFaker::AddressIN.country
40
+ end
41
+
42
+ def test_in_country_code
43
+ assert_equal "IN", FFaker::AddressIN.country_code
44
+ end
45
+
46
+ def test_in_time_zone
47
+ assert_equal "Asia/Kolkata", FFaker::AddressIN.time_zone
48
+ end
49
+
50
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressRU < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @tester = FFaker::AddressRU
9
+ end
10
+
11
+ def test_city
12
+ assert_match /\A[a-zа-яё\-\s]+\z/i, @tester.city
13
+ end
14
+
15
+ def test_province
16
+ assert_match /\A[a-zа-яё\-\s]+\z/i, @tester.province
17
+ end
18
+
19
+ def test_zip_code
20
+ assert_match /\A\d{6}\z/, @tester.zip_code
21
+ end
22
+
23
+ def test_street_name
24
+ assert_match /\A[a-zа-яё.\-\s]+\z/i, @tester.street_name
25
+ end
26
+
27
+ def test_street_address
28
+ assert_match /\A[a-zа-яё.,\-\s\d]+\z/i, @tester.street_address
29
+ end
30
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAddressUA < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @tester = FFaker::AddressUA
9
+ @multiple_words_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/
10
+ end
11
+
12
+ def test_city
13
+ assert_match @multiple_words_name_regexp, @tester.city
14
+ end
15
+
16
+ def test_country
17
+ assert_match @multiple_words_name_regexp, @tester.country
18
+ end
19
+
20
+ def test_province
21
+ assert_match @multiple_words_name_regexp, @tester.province
22
+ end
23
+
24
+ def test_zip_code
25
+ assert_match /\A\d{5}\z/, @tester.zip_code
26
+ end
27
+
28
+ def test_street_name
29
+ assert_match /\Aвул\.\s[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/, @tester.street_name
30
+ end
31
+
32
+ def test_street_address
33
+ assert_match /\Aвул\.\s[а-яА-ЯіїєґІЇЄҐ’\-\s]+,\s\d{1,3}\z/, @tester.street_address
34
+ end
35
+
36
+ def test_street_address_with_secondary
37
+ assert_match \
38
+ /\Aвул\.\s[а-яА-ЯіїєґІЇЄҐ’\-\s]+,\s\d{1,3},\sкв\.\s\d{1,3}\z/,
39
+ @tester.street_address(true)
40
+ end
41
+
42
+ def test_building_number
43
+ assert_match /\A\d{1,3}\z/, @tester.building_number
44
+ end
45
+
46
+ def test_appartment_number
47
+ assert_match /\A\d{1,3}\z/, @tester.appartment_number
48
+ end
49
+ end
@@ -1,22 +1,23 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestAvatar < Test::Unit::TestCase
4
+ ROBOHASH = 'https://robohash.org'
5
+
4
6
  def setup
5
7
  @tester = FFaker::Avatar
6
8
  end
7
9
 
8
10
  def test_avatar
9
- assert_match(/\Ahttp:\/\/robohash\.org\/.+\.png\?size=300x300\z/,
11
+ assert_match(/\Ahttps:\/\/robohash\.org\/.+\.png\?size=300x300\z/,
10
12
  @tester.image)
11
13
  end
12
14
 
13
15
  def test_avatar_with_param
14
- assert_equal('http://robohash.org/faker.png?size=300x300',
15
- @tester.image('faker'))
16
+ assert_equal("#{ROBOHASH}/faker.png?size=300x300", @tester.image('faker'))
16
17
  end
17
18
 
18
19
  def test_avatar_with_correct_size
19
- assert_equal('http://robohash.org/faker.png?size=150x320',
20
+ assert_equal("#{ROBOHASH}/faker.png?size=150x320",
20
21
  @tester.image('faker', '150x320'))
21
22
  end
22
23
 
@@ -27,7 +28,7 @@ class TestAvatar < Test::Unit::TestCase
27
28
  end
28
29
 
29
30
  def test_avatar_with_supported_format
30
- assert_equal('http://robohash.org/faker.jpg?size=300x300',
31
+ assert_equal("#{ROBOHASH}/faker.jpg?size=300x300",
31
32
  @tester.image('faker', '300x300', 'jpg'))
32
33
  end
33
34
 
@@ -38,7 +39,7 @@ class TestAvatar < Test::Unit::TestCase
38
39
  end
39
40
 
40
41
  def test_avatar_with_correct_background
41
- assert_equal('http://robohash.org/faker.png?size=300x300&bgset=bg1',
42
+ assert_equal("#{ROBOHASH}/faker.png?size=300x300&bgset=bg1",
42
43
  @tester.image('faker', '300x300', 'png', '1'))
43
44
  end
44
45
 
@@ -0,0 +1,37 @@
1
+ require 'helper'
2
+
3
+ class TestCheesyLingo < Test::Unit::TestCase
4
+
5
+ TEST_REGEX = /\+1|[a-z]+/i
6
+
7
+
8
+ def setup
9
+ @tester = FFaker::CheesyLingo
10
+ end
11
+
12
+ def test_title
13
+ assert_match TEST_REGEX, @tester.title
14
+ end
15
+
16
+ def test_word
17
+ assert_match TEST_REGEX, @tester.word
18
+ end
19
+
20
+ def test_words
21
+ assert_match TEST_REGEX, @tester.words(3).join(" ")
22
+ end
23
+
24
+ def test_sentence
25
+ assert_match TEST_REGEX, @tester.sentence
26
+ assert_match /1\+|[ a-zA-Z]+./, @tester.sentence
27
+ end
28
+
29
+ def test_paragraph #without passing count
30
+ assert_match /\+|[a-zA-Z]*./, @tester.paragraph(1)
31
+ end
32
+
33
+ def test_paragraph_with_arg
34
+ assert_match /\+1|[a-zA-Z]+./, @tester.paragraph(3)
35
+ end
36
+
37
+ end