checkability 1.0.1 → 2.1.1

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