checkability 1.0.1 → 2.1.1

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: 49569c239e2acdb43486cf8269a923d3118424798700e49be0edfaf7f7551b25
4
- data.tar.gz: 7a81f73bc65865564495bd5d8b9680d76249fa69b3d730543162ebd5b1f61048
3
+ metadata.gz: 597efc0d486d6dc0f0487b242871e712cafb59f1ca3e76f9f5538cde17c5de54
4
+ data.tar.gz: d58963305fa999ab2bd1663303ee8fbbb5844bcda276977eecc009484e79e8ce
5
5
  SHA512:
6
- metadata.gz: d28be27a0487566262cf3d284213b076f1c7dbc9bfc2f59844444fa16761842c9348dd9df609420488bc8d597a3b50741a7bb712de86ab2056afb565399dc07b
7
- data.tar.gz: ad42af8d0f399d130c2282d4c2938230f87c9f01e70fd43df3f031303aeca8767335a5e0fabe281b58edb1d081c5500a10a83d94e7befda7f461f4770bbf9c0c
6
+ metadata.gz: c4a2b9dacaa1b6e4f9e9f2441a2fc7d3b8f6b191b8a4f97f18e54b511fbc6440da27d191258e17618bdfae8ffff65be3109c6d36467f3049e3b4d2d0786038aa
7
+ data.tar.gz: 7a54d3c0f0b8d506def36cdb6143b35af1be503bc9e5f523f9266efe051685cc63db15c862549e51deef7b9e0f93fb5b25c89383aeff7bb3740414c7d8d139ed
data/README.md CHANGED
@@ -76,4 +76,5 @@ The gem is available as open source under the terms of the [MIT License](https:/
76
76
 
77
77
  ## Future works
78
78
 
79
- - [ ] Use ChainOfResponsibility pattern to simplify call of checkers
79
+ - [X] Use ChainOfResponsibility pattern to simplify call of checkers
80
+ - [ ] Improve test with adding doubles
@@ -23,7 +23,7 @@ module Checkability
23
23
  end
24
24
  end
25
25
 
26
- attr_accessor :ch_allowed, :ch_messages
26
+ attr_accessor :ch_allowed, :ch_messages, :ch_conf
27
27
 
28
28
  def initialize(params)
29
29
  @ch_messages = []
@@ -32,8 +32,9 @@ module Checkability
32
32
  end
33
33
 
34
34
  def perform_check
35
- Checkability::Checkable.new(self).check(ch_conf)
36
- ch_messages << "#{ch_allowed}::'#{_value}' is #{_allowness}. "
35
+ @ch_conf = ch_conf
36
+ Checkability::Checkable.new(self).check
37
+ ch_messages << "#{ch_allowed}:::'#{_value}' is #{_allowness}. "
37
38
  end
38
39
 
39
40
  private
@@ -10,10 +10,10 @@ module Checkability
10
10
  :success_message, :failure_message
11
11
 
12
12
  def initialize(opts = {})
13
- @stop_process_on_failure = opts[:stop_process_on_failure] || false
14
- @stop_process_on_success = opts[:stop_process_on_success] || false
15
- @success_message = opts[:success_message] || 'Success.'
16
- @failure_message = opts[:failure_message] || 'Failed.'
13
+ @stop_process_on_failure = opts.fetch(:stop_process_on_failure) || false
14
+ @stop_process_on_success = opts.fetch(:stop_process_on_success) || false
15
+ @success_message = opts.fetc(:success_message) || 'Success.'
16
+ @failure_message = opts.fetc(:failure_message) || 'Failed.'
17
17
 
18
18
  @next_handler = nil
19
19
  post_initialize(opts) # implemented in subclass
@@ -53,8 +53,8 @@ module Checkability
53
53
 
54
54
  str = res ? success_message : failure_message
55
55
  [res, message(res, str)]
56
- # rescue StandardError => e
57
- # [false, message(false, e)]
56
+ rescue StandardError => e
57
+ [false, message(false, e)]
58
58
  end
59
59
 
60
60
  # subclass should implement
@@ -64,7 +64,7 @@ module Checkability
64
64
 
65
65
  # subclass may override
66
66
  def message(res, str)
67
- "#{res}::#{str}"
67
+ "#{res}:::#{str}"
68
68
  end
69
69
 
70
70
  private
@@ -7,10 +7,10 @@ module Checkability
7
7
  # Possible to implemet as Iterator in future
8
8
  #
9
9
  class Checkable
10
- attr_accessor :check_obj
10
+ attr_accessor :check_obj, :handler_confs
11
11
 
12
12
  extend Forwardable
13
- def_delegators :@check_obj, :ch_messages, :ch_allowed
13
+ def_delegators :@check_obj, :ch_messages, :ch_allowed, :ch_conf
14
14
 
15
15
  def initialize(check_obj)
16
16
  @check_obj = check_obj
@@ -26,29 +26,30 @@ module Checkability
26
26
  #
27
27
  # ChainOfResponsibilty
28
28
  #
29
- def check(handler_confs)
30
- first_handler_name = handler_confs.keys.first
31
- first_handler = _handlers(handler_confs)[first_handler_name]
32
-
33
- first_handler.handle(check_obj)
29
+ def check
30
+ _first_handler.handle(check_obj)
34
31
  rescue StandardError => e
35
- check_obj.ch_messages << "false::#{e}: #{handler_confs}."
32
+ check_obj.ch_messages << "false:::#{e}: #{handler_confs}."
36
33
  false
37
34
  end
38
35
 
39
36
  private
40
37
 
41
- def _handlers(handler_confs)
42
- handlers = _make_handlers(handler_confs)
38
+ def _first_handler
39
+ _handlers[ch_conf.keys.first]
40
+ end
41
+
42
+ def _handlers
43
+ handlers = _make_handlers
43
44
  handlers.each_value.with_index do |handler, i|
44
- next_handler_name = handlers.keys[i + 1]
45
- handler.next_handler(handlers[next_handler_name]) if handlers[next_handler_name]
45
+ next_handler = handlers[handlers.keys[i + 1]]
46
+ handler.next_handler(next_handler) if next_handler
46
47
  end
47
48
  handlers
48
49
  end
49
50
 
50
- def _make_handlers(confs)
51
- confs.transform_values { |conf| _make_handler(conf) }
51
+ def _make_handlers
52
+ ch_conf.transform_values { |conf| _make_handler(conf) }
52
53
  end
53
54
 
54
55
  def _make_handler(conf)
@@ -35,7 +35,7 @@ module Checkability
35
35
  end
36
36
 
37
37
  def message(res, str = nil)
38
- "#{res}::#{path}: #{str}"
38
+ "#{res}:::#{path}: #{str}"
39
39
  end
40
40
 
41
41
  private
@@ -18,7 +18,7 @@ module Checkability
18
18
  end
19
19
 
20
20
  def message(res, str = nil)
21
- "#{res}::Allowed #{storage_class}s list: #{str}"
21
+ "#{res}:::Allowed #{storage_class}s list: #{str}"
22
22
  end
23
23
 
24
24
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Checkability
4
- VERSION = '1.0.1'
4
+ VERSION = '2.1.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkability
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Eremeev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-06 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Provide Checkers functionality.
14
14
  email: