eitil 1.0.3 → 1.0.4

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