factory-helper 1.7.1 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fcfea6f7dbb15cd9443d960f17b6fcc8c3a544c
4
- data.tar.gz: eab61e8d5523891927e2367b9d64ec65f6990550
3
+ metadata.gz: 49290064ffe7f5787ab0ef9b4e1917d9e628c7ed
4
+ data.tar.gz: bd0fe13ab86afbe4e142c8f883be914dcbd6b364
5
5
  SHA512:
6
- metadata.gz: bbb7b7d88ae8cf59cb4dcf731b4427b3bc39553c82352e9f106d6898da3f36b0511fd250b37425cebb892619eb7a3bb0cc6382e88cb1d03912ae04081b832bd5
7
- data.tar.gz: b12d0a0cf7860dcd5ebe2b7693f984a6812f33e26e6bf143e80390ecbc11033fce8c3caca228a0c4a173bb0b61cf9b86ea07c21befc573cb72eccd770323e202
6
+ metadata.gz: 11921bb744d08e0c15f763fd36c3b85b902f0f511a2886e2c7187ea88364d6f01123abba6e49b46e64a1759c830bd47a7db10baa9402e421e9a45ff4aea0412e
7
+ data.tar.gz: 316220e2ebff579ef5015aaab6b4c1cf37be03cdf60b7b883d5e9cb4764251717da567ec004b389f218b22ddd2aa9d0d1b6323c567d8bdb6a423829af2ae0d4c
data/README.md CHANGED
@@ -54,7 +54,7 @@ FactoryHelper::Company.bs #=> "revolutionize plug-and-play architectures"
54
54
 
55
55
  ###FactoryHelper::String
56
56
  -----------------
57
- Random UTF-8 string with an optional length argument
57
+ Random UTF-8 string with an optional length argument.
58
58
 
59
59
  ```ruby
60
60
  FactoryHelper::String.random #=> "3 뇦\u0017&y\u{3A109}$8^4* 녹豿4좘툢ꔾ쉙6ɉ\uA6F8TN畀챵|\"3쇤Ŵ"
@@ -64,6 +64,20 @@ FactoryHelper::String.random([0, 6]) #=> "I轤𣴒P溟L"
64
64
  ```
65
65
 
66
66
 
67
+ ###FactoryHelper::MySQL
68
+ -----------------
69
+ Generates values for a factory per the MySQL datatypes. Accepts options unsigned, min, max.
70
+
71
+ ```ruby
72
+ FactoryHelper::MySQL.integer #=> 1729 (int & integer are equivalent)
73
+ FactoryHelper::MySQL.tinyint #=> 42
74
+ FactoryHelper::MySQL.bigint #=> 9223372036854775807
75
+ FactoryHelper::MySQL.smallint(unsigned: true) #=> 55777
76
+ FactoryHelper::MySQL.int(min: 0, max: 1319) #=> 998
77
+ FactoryHelper::MySQL.mediumint #=> 7456451
78
+ ```
79
+
80
+
67
81
  ###FactoryHelper::Address
68
82
  -----------------
69
83
 
@@ -188,3 +188,4 @@ require_relative 'factory-helper/hacker'
188
188
  require_relative 'factory-helper/app'
189
189
  require_relative 'factory-helper/slack_emoji'
190
190
  require_relative 'factory-helper/string'
191
+ require_relative 'factory-helper/my_sql'
@@ -0,0 +1,89 @@
1
+ module FactoryHelper
2
+ # created for MySQL 5.0 https://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
3
+ class MySQL < Base
4
+ INTEGERS= {
5
+ :tinyint => {
6
+ false => {:min => -128, :max => 127},
7
+ true => {:min => 0, :max => 255},
8
+ },
9
+ :smallint => {
10
+ false => {:min => -32768, :max => 32767},
11
+ true => {:min => 0, :max => 65535},
12
+ },
13
+ :mediumint => {
14
+ false => {:min => -8388608, :max => 8388607},
15
+ true => {:min => 0, :max => 16777215},
16
+ },
17
+ :integer => {
18
+ false => {:min => -2147483648, :max => 2147483647},
19
+ true => {:min => 0, :max => 4294967295},
20
+ },
21
+ :bigint => {
22
+ false => {:min => -9223372036854775808, :max => 9223372036854775807},
23
+ true => {:min => 0, :max => 18446744073709551615},
24
+ },
25
+ }
26
+ ArgumentError= Class.new(StandardError)
27
+
28
+ class << self
29
+ def tinyint opt= {}
30
+ int_sanitize opt
31
+ int_with_edge_cases(int_limits_for :tinyint, opt)
32
+ end
33
+
34
+ def smallint opt= {}
35
+ [ tinyint(opt),
36
+ int_with_edge_cases(int_limits_for :smallint, opt),
37
+ ].sample(:random => FactoryHelper::Config.random)
38
+ end
39
+
40
+ def mediumint opt= {}
41
+ [ smallint(opt),
42
+ int_with_edge_cases(int_limits_for :mediumint, opt),
43
+ ].sample(:random => FactoryHelper::Config.random)
44
+ end
45
+
46
+ def integer opt= {}
47
+ [ mediumint(opt),
48
+ int_with_edge_cases(int_limits_for :integer, opt),
49
+ ].sample(:random => FactoryHelper::Config.random)
50
+ end
51
+
52
+ def bigint opt= {}
53
+ [ integer(opt),
54
+ int_with_edge_cases(int_limits_for :bigint, opt),
55
+ ].sample(:random => FactoryHelper::Config.random)
56
+ end
57
+
58
+ alias_method :int, :integer
59
+
60
+ private
61
+
62
+ def int_with_edge_cases opt= {:min => -128, :max => 127}
63
+ [ int_edge_case_for(opt),
64
+ FactoryHelper::Config.random.rand(opt[:min].. opt[:max]),
65
+ FactoryHelper::Config.random.rand(opt[:min].. opt[:max]),
66
+ ].sample(:random => FactoryHelper::Config.random)
67
+ end
68
+
69
+ def int_limits_for datatype= :integer, opt= {}
70
+ INTEGERS[datatype][!!opt[:unsigned]].merge(opt)
71
+ end
72
+
73
+ def int_edge_case_for opt= {:min => -128, :max => 127}
74
+ [-1, 1, 0, opt[:min], opt[:max]].keep_if do |element|
75
+ (opt[:min].. opt[:max]).include?(element)
76
+ end.sample(:random => FactoryHelper::Config.random)
77
+ end
78
+
79
+ def int_sanitize opt
80
+ raise ArgumentError, 'Argument list must be a hash.' unless opt.kind_of? Hash
81
+ raise ArgumentError, 'Must specify a min and a max, or neither.' if !!opt[:min]^ !!opt[:max]
82
+ raise ArgumentError, '`:min` must reference an Integer' if opt[:min]&& !opt[:min].kind_of?(Integer)
83
+ raise ArgumentError, '`:max` must reference an Integer' if opt[:max]&& !opt[:max].kind_of?(Integer)
84
+ raise ArgumentError, "Minimum(#{opt[:min]}) must not be less than zero when unsigned" if (opt[:unsigned]&& opt[:min]&& opt[:min]< 0)
85
+ raise ArgumentError, "Minimum(#{opt[:min]}) must be less than Maximum(#{opt[:max]})" if opt[:min]&& opt[:max]&& (opt[:max]< opt[:min])
86
+ end
87
+ end
88
+ end
89
+ end
@@ -1,3 +1,3 @@
1
1
  module FactoryHelper #:nodoc:
2
- VERSION = "1.7.1"
2
+ VERSION = "1.7.2"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  en-US:
3
3
  factory_helper:
4
4
  internet:
5
- domain_suffix: [com, us, biz, info, name, net, org]
5
+ domain_suffix: [com, us, biz, info, name, net, org, io, co]
6
6
  address:
7
7
  default_country: [United States, United States of America, USA]
8
8
  postcode_by_state:
data/lib/locales/en.yml CHANGED
@@ -95,7 +95,7 @@ en:
95
95
 
96
96
  internet:
97
97
  free_email: [gmail.com, yahoo.com, hotmail.com]
98
- domain_suffix: [com, biz, info, name, net, org]
98
+ domain_suffix: [com, biz, info, name, net, org, io, co]
99
99
 
100
100
  lorem:
101
101
  words: [alias, consequatur, aut, perferendis, sit, voluptatem, accusantium, doloremque, aperiam, eaque, ipsa, quae, ab, illo, inventore, veritatis, et, quasi, architecto, beatae, vitae, dicta, sunt, explicabo, aspernatur, aut, odit, aut, fugit, sed, quia, consequuntur, magni, dolores, eos, qui, ratione, voluptatem, sequi, nesciunt, neque, dolorem, ipsum, quia, dolor, sit, amet, consectetur, adipisci, velit, sed, quia, non, numquam, eius, modi, tempora, incidunt, ut, labore, et, dolore, magnam, aliquam, quaerat, voluptatem, ut, enim, ad, minima, veniam, quis, nostrum, exercitationem, ullam, corporis, nemo, enim, ipsam, voluptatem, quia, voluptas, sit, suscipit, laboriosam, nisi, ut, aliquid, ex, ea, commodi, consequatur, quis, autem, vel, eum, iure, reprehenderit, qui, in, ea, voluptate, velit, esse, quam, nihil, molestiae, et, iusto, odio, dignissimos, ducimus, qui, blanditiis, praesentium, laudantium, totam, rem, voluptatum, deleniti, atque, corrupti, quos, dolores, et, quas, molestias, excepturi, sint, occaecati, cupiditate, non, provident, sed, ut, perspiciatis, unde, omnis, iste, natus, error, similique, sunt, in, culpa, qui, officia, deserunt, mollitia, animi, id, est, laborum, et, dolorum, fuga, et, harum, quidem, rerum, facilis, est, et, expedita, distinctio, nam, libero, tempore, cum, soluta, nobis, est, eligendi, optio, cumque, nihil, impedit, quo, porro, quisquam, est, qui, minus, id, quod, maxime, placeat, facere, possimus, omnis, voluptas, assumenda, est, omnis, dolor, repellendus, temporibus, autem, quibusdam, et, aut, consequatur, vel, illum, qui, dolorem, eum, fugiat, quo, voluptas, nulla, pariatur, at, vero, eos, et, accusamus, officiis, debitis, aut, rerum, necessitatibus, saepe, eveniet, ut, et, voluptates, repudiandae, sint, et, molestiae, non, recusandae, itaque, earum, rerum, hic, tenetur, a, sapiente, delectus, ut, aut, reiciendis, voluptatibus, maiores, doloribus, asperiores, repellat]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory-helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Avvakumov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-15 00:00:00.000000000 Z
12
+ date: 2015-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -119,6 +119,7 @@ files:
119
119
  - lib/factory-helper/hacker.rb
120
120
  - lib/factory-helper/internet.rb
121
121
  - lib/factory-helper/lorem.rb
122
+ - lib/factory-helper/my_sql.rb
122
123
  - lib/factory-helper/name.rb
123
124
  - lib/factory-helper/number.rb
124
125
  - lib/factory-helper/phone_number.rb