eitil 1.0.3 → 1.0.4

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
  SHA256:
3
- metadata.gz: fb62fad1bf470c019f2d9135d57d1089dcfe66d9d68c615238971bd13de64093
4
- data.tar.gz: 23cfaf9d5b62e8eb7ee6b84e30b8eb31443ca8225eabb3273d7f9fe068c73077
3
+ metadata.gz: 2bf167d056adee32eeba94ac5282d6a9890575a309c775bd53da822f4817501e
4
+ data.tar.gz: '08bbebecb6e9d84567d522d9c7b62e23ff8b3a6e3b3b1fee5639a58aa9f6bc68'
5
5
  SHA512:
6
- metadata.gz: 21259ffe29a2251548cef05d8732050c46b5553cdba93b1bc71a9558ac4db71f313158e113fa1a69988b2647169dfa5637036bb7baeabe71352ebd7d5bae096c
7
- data.tar.gz: 7a4ad7b5b53b8f262070a82342b35caec497be066ed01b3ac929cb078f20e3ef3afbaec85ec2f3ad3db8ede6301e7d9555fa94a41d9bf2c85f8a63f6ee24990a
6
+ metadata.gz: cab736bd8a72ba50468f017d91f12fabe1a8a8887bb892797c7466296227fb763e413a5ae372c535ef134963181414ac8ef3d7cae497d708b178f05a93c03ce1
7
+ data.tar.gz: dc057b62c574bea1b96e4074c9af724cf3ad59d957f9a62790cbe63ec998503c1ae1a1b5f253388d293ab1bfb5eeeb41b7f247dc61e1b635dacadc7bf644ddd0
data/eitil_core/README.md CHANGED
@@ -259,6 +259,39 @@ Find.gem_path(gem_name)
259
259
  ```
260
260
 
261
261
 
262
+ ## Mocks
263
+
264
+ ```ruby
265
+
266
+ require "eitil_core/mocks"
267
+
268
+ ```
269
+
270
+ ```ruby
271
+ # require "eitil_core/mocks/string"
272
+
273
+ String.mock(n=25)
274
+ # String.mock(10) # ==> "oooooo c nnnnnnnnnn ttttttttt p kkk r ppppp rrrrrrr uuu"
275
+ ```
276
+
277
+ ```ruby
278
+ # require "eitil_core/mocks/array"
279
+
280
+ Array.mock(n=10, type=Integer, &block)
281
+ # Array.mock # ==> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
282
+ # Array.mock(10, Float) #==> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
283
+ # Built-in methods are provided for classes Integer, Float, String, Date, Time
284
+ # But any other class is accepted as well, also your own classes such as User, Shift and Environment
285
+ ```
286
+
287
+ ```ruby
288
+ # require "eitil_core/mocks/hash"
289
+
290
+ Hash.mock(n=10)
291
+ # Hash.mock(10) #==> {"a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8, "i"=>9, "j"=>10}
292
+ ```
293
+
294
+
262
295
  ## SafeExecutions
263
296
 
264
297
  ```ruby
@@ -8,6 +8,7 @@ require "eitil_core/datetime"
8
8
 
9
9
  # multi class patches
10
10
  require "eitil_core/type_checkers"
11
+ require "eitil_core/mocks"
11
12
 
12
13
  # rails class patches
13
14
  require "eitil_core/application_record"
@@ -0,0 +1,6 @@
1
+
2
+ # require "eitil_core/mocks"
3
+
4
+ require "eitil_core/mocks/array"
5
+ require "eitil_core/mocks/hash"
6
+ require "eitil_core/mocks/string"
@@ -0,0 +1,39 @@
1
+
2
+ # require "eitil_core/mocks/array"
3
+
4
+ class Array
5
+
6
+ def self.mock(n=10, type=Integer, &block)
7
+
8
+ return Array.new(n,&block) if block_given?
9
+
10
+ case type.to_s
11
+
12
+ when 'Integer'
13
+ Array.new(n) {|i| i+1}
14
+
15
+ when 'Float'
16
+ Array.new(n) {|i| i+1.0}
17
+
18
+ when 'String'
19
+ words = String.mock(n).split
20
+ Array.new(n) {|i| words[i]}
21
+
22
+ when 'Time'
23
+ time_now = Time.now
24
+ Array.new(n) {|i| time_now + (i * (60 * 60 * 24)) }
25
+
26
+ when 'Date'
27
+ date_now = Date.today
28
+ Array.new(n) {|i| date_now + (i * 1) }
29
+
30
+ else
31
+ Array.new(n) do
32
+ type.send(:new) rescue
33
+ raise NoNewMethodError, 'Please provide Object that responds to `new` call'
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,36 @@
1
+
2
+ # require "eitil_core/mocks/hash"
3
+
4
+ class Hash
5
+
6
+ def self.mock(n=10)
7
+ range = mock_size(n).to_a
8
+ Hash[Array.mock(n) {|m| range[m] }.zip(Array.mock(n))]
9
+ end
10
+
11
+ private
12
+
13
+ def self.mock_size(n)
14
+ EitilCore::Mock.hash_range_for(n)
15
+ end
16
+
17
+ end
18
+
19
+
20
+ module EitilCore
21
+ module Mock
22
+
23
+ def self.hash_range_for(n)
24
+ range = nil
25
+ i = 0
26
+
27
+ until range != nil do
28
+ range = ('a'..'z') if n <= 26
29
+ range = ('a'.."z#{'z'*i}") if n < (26 + (26 ** (i+1) )) && !range
30
+ i += 1
31
+ end
32
+ range
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+
2
+ # require "eitil_core/mocks/string"
3
+
4
+ class String
5
+
6
+ def self.mock(n=25)
7
+ alphabet = ('a'..'z').to_a
8
+ n.times.map { alphabet.sample * rand(1..10) } * ' '
9
+ end
10
+
11
+ end
data/lib/eitil/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Eitil
2
2
 
3
- VERSION = '1.0.3'
3
+ VERSION = '1.0.4'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eitil
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurriaan Schrofer
@@ -110,6 +110,10 @@ files:
110
110
  - eitil_core/lib/eitil_core/lookups.rb
111
111
  - eitil_core/lib/eitil_core/lookups/all_methods.rb
112
112
  - eitil_core/lib/eitil_core/lookups/gem_path.rb
113
+ - eitil_core/lib/eitil_core/mocks.rb
114
+ - eitil_core/lib/eitil_core/mocks/array.rb
115
+ - eitil_core/lib/eitil_core/mocks/hash.rb
116
+ - eitil_core/lib/eitil_core/mocks/string.rb
113
117
  - eitil_core/lib/eitil_core/railtie.rb
114
118
  - eitil_core/lib/eitil_core/safe_executions.rb
115
119
  - eitil_core/lib/eitil_core/safe_executions/safe_call.rb