convenient_service 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -0
  3. data/ROADMAP.md +12 -1
  4. data/convenient_service.gemspec +2 -1
  5. data/lib/convenient_service/aliases.rb +1 -0
  6. data/lib/convenient_service/common/plugins/has_around_callbacks/middleware.rb +24 -4
  7. data/lib/convenient_service/common/plugins/has_callbacks/container.rb +17 -0
  8. data/lib/convenient_service/common/plugins/has_callbacks/entities/callback.rb +98 -5
  9. data/lib/convenient_service/common/plugins/has_callbacks/middleware.rb +25 -4
  10. data/lib/convenient_service/common/plugins/has_callbacks.rb +1 -0
  11. data/lib/convenient_service/common/plugins.rb +1 -1
  12. data/lib/convenient_service/configs/standard.rb +25 -12
  13. data/lib/convenient_service/dependencies.rb +12 -0
  14. data/lib/convenient_service/examples/dry/gemfile/dry_service/config.rb +1 -1
  15. data/lib/convenient_service/examples/rails/gemfile/rails_service/config.rb +1 -1
  16. data/lib/convenient_service/examples/rails/gemfile/services/format.rb +35 -6
  17. data/lib/convenient_service/examples/rails/gemfile/services/format_header.rb +1 -2
  18. data/lib/convenient_service/examples/rails/gemfile/services/merge_sections.rb +25 -0
  19. data/lib/convenient_service/examples/rails/gemfile/services/replace_file_content.rb +37 -0
  20. data/lib/convenient_service/examples/rails/gemfile/services.rb +8 -4
  21. data/lib/convenient_service/examples/standard/gemfile/services/format.rb +45 -6
  22. data/lib/convenient_service/examples/standard/gemfile/services/merge_sections.rb +52 -0
  23. data/lib/convenient_service/examples/standard/gemfile/services/replace_file_content.rb +48 -0
  24. data/lib/convenient_service/examples/standard/gemfile/services.rb +8 -4
  25. data/lib/convenient_service/factories/arguments.rb +43 -0
  26. data/lib/convenient_service/factories/results.rb +214 -0
  27. data/lib/convenient_service/factories/services.rb +189 -0
  28. data/lib/convenient_service/factories/step/instance.rb +32 -0
  29. data/lib/convenient_service/factories/step.rb +3 -0
  30. data/lib/convenient_service/factories/steps.rb +126 -0
  31. data/lib/convenient_service/factories.rb +22 -0
  32. data/lib/convenient_service/factory.rb +21 -0
  33. data/lib/convenient_service/rspec/matchers/custom/be_descendant_of.rb +2 -2
  34. data/lib/convenient_service/rspec/matchers/custom/be_direct_descendant_of.rb +2 -2
  35. data/lib/convenient_service/rspec/matchers/custom/delegate_to.rb +9 -0
  36. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_method_step.rb +74 -0
  37. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_result_method_step.rb +66 -0
  38. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_service_step.rb +48 -0
  39. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/generate_expected_step_part.rb +42 -0
  40. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/generate_got_step_part.rb +42 -0
  41. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/match_result_step.rb +89 -0
  42. data/lib/convenient_service/rspec/matchers/custom/results/base/commands.rb +10 -0
  43. data/lib/convenient_service/rspec/matchers/custom/results/base/errors.rb +35 -0
  44. data/lib/convenient_service/rspec/matchers/custom/results/base.rb +73 -12
  45. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/concern.rb +85 -0
  46. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/initialize/middleware.rb +27 -0
  47. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/initialize.rb +3 -0
  48. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/to_kwargs/middleware.rb +25 -0
  49. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/to_kwargs.rb +3 -0
  50. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result.rb +5 -0
  51. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/concern/instance_methods.rb +7 -1
  52. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/entities/data.rb +4 -0
  53. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/concern.rb +27 -0
  54. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/initialize/middleware.rb +27 -0
  55. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/initialize.rb +3 -0
  56. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/to_kwargs/middleware.rb +25 -0
  57. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/to_kwargs.rb +3 -0
  58. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step.rb +5 -0
  59. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins.rb +2 -0
  60. data/lib/convenient_service/service/plugins/has_result_method_steps.rb +0 -2
  61. data/lib/convenient_service/service/plugins/has_result_steps/concern.rb +18 -7
  62. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/define_method_in_container.rb +2 -2
  63. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/reassignment/commands/define_method_in_container.rb +1 -1
  64. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/concern/instance_methods.rb +26 -1
  65. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins/can_have_parent_result/middleware.rb +23 -0
  66. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins/can_have_parent_result.rb +3 -0
  67. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins.rb +1 -0
  68. data/lib/convenient_service/service/plugins/has_result_steps/entities/step_collection.rb +13 -0
  69. data/lib/convenient_service/service/plugins/has_result_steps/middleware.rb +18 -4
  70. data/lib/convenient_service/services/run_method_in_organizer.rb +28 -0
  71. data/lib/convenient_service/services/run_own_method_in_organizer.rb +64 -0
  72. data/lib/convenient_service/{service/plugins/has_result_method_steps/services.rb → services.rb} +0 -1
  73. data/lib/convenient_service/support/copyable.rb +6 -2
  74. data/lib/convenient_service/support/dependency_container/errors.rb +1 -1
  75. data/lib/convenient_service/support/not_passed.rb +3 -1
  76. data/lib/convenient_service/version.rb +1 -1
  77. data/lib/convenient_service.rb +6 -0
  78. data/logo.png +0 -0
  79. metadata +58 -11
  80. data/lib/convenient_service/service/plugins/has_result_method_steps/errors.rb +0 -23
  81. data/lib/convenient_service/service/plugins/has_result_method_steps/services/method_step_config.rb +0 -55
  82. data/lib/convenient_service/service/plugins/has_result_method_steps/services/run_method_in_organizer.rb +0 -30
  83. data/lib/convenient_service/service/plugins/has_result_method_steps/services/run_own_method_in_organizer.rb +0 -52
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # WIP: Factory API is NOT well-thought yet. It will be revisited and completely refactored at any time.
5
+ #
6
+ module ConvenientService
7
+ module Factories
8
+ module Steps
9
+ ##
10
+ # @return [Class]
11
+ #
12
+ # @example Default.
13
+ #
14
+ # class Step
15
+ # include ConvenienService::Standard::Config
16
+ # end
17
+ #
18
+ # class Service
19
+ # include ConvenienService::Standard::Config
20
+ # # ...
21
+ # step Step # `step` is `args.first`
22
+ # # ...
23
+ # end
24
+ #
25
+ def create_step(...)
26
+ create_service_step_class(...)
27
+ end
28
+
29
+ ##
30
+ # @return [Integer]
31
+ #
32
+ # @example Default.
33
+ #
34
+ # class Service
35
+ # include ConvenienService::Standard::Config
36
+ # # ...
37
+ # step 42 # `step` is `args.first`
38
+ # # ...
39
+ # end
40
+ #
41
+ def create_invalid_step(...)
42
+ 42
43
+ end
44
+
45
+ ##
46
+ # @return [Class]
47
+ #
48
+ # @example Default.
49
+ #
50
+ # class Step
51
+ # include ConvenienService::Standard::Config
52
+ # end
53
+ #
54
+ # class Service
55
+ # include ConvenienService::Standard::Config
56
+ # # ...
57
+ # step Step # `step` is `args.first`
58
+ # # ...
59
+ # end
60
+ #
61
+ def create_service_step(...)
62
+ create_service_step_class(...)
63
+ end
64
+
65
+ ##
66
+ # @return [Symbol]
67
+ #
68
+ # @example Default.
69
+ #
70
+ # class Step
71
+ # include ConvenienService::Standard::Config
72
+ # end
73
+ #
74
+ # class Service
75
+ # include ConvenienService::Standard::Config
76
+ # # ...
77
+ # step :validate # `step` is `args.first`
78
+ # # ...
79
+ # end
80
+ #
81
+ def create_method_step
82
+ ::Faker::Verb.unique.base.to_sym
83
+ end
84
+
85
+ ##
86
+ # @return [Symbol]
87
+ #
88
+ # @example Default.
89
+ #
90
+ # class Step
91
+ # include ConvenienService::Standard::Config
92
+ # end
93
+ #
94
+ # class Service
95
+ # include ConvenienService::Standard::Config
96
+ # # ...
97
+ # step :result # `step` is `args.first`
98
+ # # ...
99
+ # end
100
+ #
101
+ def create_result_method_step
102
+ :result
103
+ end
104
+
105
+ ##
106
+ # @return [Class]
107
+ #
108
+ # @example Default.
109
+ #
110
+ # class Step
111
+ # include ConvenienService::Standard::Config
112
+ # end
113
+ #
114
+ # class Service
115
+ # include ConvenienService::Standard::Config
116
+ # # ...
117
+ # step Step # `step` is `args.first`
118
+ # # ...
119
+ # end
120
+ #
121
+ def create_service_step_class
122
+ create_service_class
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "factories/arguments"
4
+ require_relative "factories/services"
5
+ require_relative "factories/results"
6
+ require_relative "factories/steps"
7
+
8
+ require_relative "factories/step"
9
+
10
+ ##
11
+ # WIP: Factory API is NOT well-thought yet. It will be revisited and completely refactored at any time.
12
+ #
13
+ module ConvenientService
14
+ module Factories
15
+ extend Arguments
16
+ extend Services
17
+ extend Results
18
+ extend Steps
19
+
20
+ extend Step::Instance
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "factories"
4
+
5
+ ##
6
+ # WIP: Factory API is NOT well-thought yet. It will be revisited and completely refactored at any time.
7
+ #
8
+ module ConvenientService
9
+ module Factory
10
+ class << self
11
+ ##
12
+ # @param method [String, Symbol]
13
+ # @param kwargs [Hash]
14
+ # @return [Object] Can be any type.
15
+ #
16
+ def create(method, **kwargs)
17
+ Factories.public_send("create_#{method}", **kwargs)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -30,7 +30,7 @@ module ConvenientService
30
30
  end
31
31
 
32
32
  ##
33
- # NOTE: `failure_message` is only called when `mathces?` returns `false`.
33
+ # NOTE: `failure_message` is only called when `matches?` returns `false`.
34
34
  # https://rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers/MatcherProtocol#failure_message-instance_method
35
35
  #
36
36
  def failure_message
@@ -38,7 +38,7 @@ module ConvenientService
38
38
  end
39
39
 
40
40
  ##
41
- # NOTE: `failure_message_when_negated` is only called when `mathces?` returns `false`.
41
+ # NOTE: `failure_message_when_negated` is only called when `matches?` returns `false`.
42
42
  # https://rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers/MatcherProtocol#failure_message-instance_method
43
43
  #
44
44
  def failure_message_when_negated
@@ -30,7 +30,7 @@ module ConvenientService
30
30
  end
31
31
 
32
32
  ##
33
- # NOTE: `failure_message` is only called when `mathces?` returns `false`.
33
+ # NOTE: `failure_message` is only called when `matches?` returns `false`.
34
34
  # https://rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers/MatcherProtocol#failure_message-instance_method
35
35
  #
36
36
  def failure_message
@@ -38,7 +38,7 @@ module ConvenientService
38
38
  end
39
39
 
40
40
  ##
41
- # NOTE: `failure_message_when_negated` is only called when `mathces?` returns `false`.
41
+ # NOTE: `failure_message_when_negated` is only called when `matches?` returns `false`.
42
42
  # https://rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers/MatcherProtocol#failure_message-instance_method
43
43
  #
44
44
  def failure_message_when_negated
@@ -94,6 +94,15 @@ module ConvenientService
94
94
  self
95
95
  end
96
96
 
97
+ ##
98
+ # TODO: `and_return`.
99
+ #
100
+ # def and_return(...)
101
+ # matcher.and_return(...)
102
+ #
103
+ # self
104
+ # end
105
+
97
106
  ##
98
107
  # @return [ConvenientService::RSpec::Matchers::Custom::DelegateTo]
99
108
  #
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class FindResultMethodStep < Support::Command
11
+ ##
12
+ # @!attribute result [r]
13
+ # @return [ConvenientService::Service::Plugins::HasResult::Entities::Result]
14
+ #
15
+ attr_reader :result
16
+
17
+ ##
18
+ # @!attribute method_name [r]
19
+ # @return [Symbol]
20
+ #
21
+ attr_reader :method_name
22
+
23
+ ##
24
+ # @param result [ConvenientService::Service::Plugins::HasResult::Entities::Result]
25
+ # @param method_name [Symbol]
26
+ # @return [void]
27
+ #
28
+ def initialize(result:, method_name:)
29
+ @result = result
30
+ @method_name = method_name
31
+ end
32
+
33
+ ##
34
+ # @return [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
35
+ #
36
+ def call
37
+ return nil unless result.step
38
+
39
+ result.step.inputs.find { |input| match_service_class?(input) && match_key?(input) && match_value?(input) }
40
+ end
41
+
42
+ private
43
+
44
+ ##
45
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
46
+ # @return [Boolean]
47
+ #
48
+ def match_service_class?(input)
49
+ result.step.service_class == Services::RunMethodInOrganizer
50
+ end
51
+
52
+ ##
53
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
54
+ # @return [Boolean]
55
+ #
56
+ def match_key?(input)
57
+ input.key.to_sym == :method_name
58
+ end
59
+
60
+ ##
61
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
62
+ # @return [Boolean]
63
+ #
64
+ def match_value?(input)
65
+ input.value.to_sym == method_name
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class FindResultResultMethodStep < Support::Command
11
+ ##
12
+ # @!attribute result [r]
13
+ # @return [ConvenientService::Service::Plugins::HasResult::Entities::Result]
14
+ #
15
+ attr_reader :result
16
+
17
+ ##
18
+ # @param result [ConvenientService::Service::Plugins::HasResult::Entities::Result]
19
+ # @return [void]
20
+ #
21
+ def initialize(result:)
22
+ @result = result
23
+ end
24
+
25
+ ##
26
+ # @return [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
27
+ #
28
+ def call
29
+ return nil unless result.step
30
+
31
+ result.step.inputs.find { |input| match_service_class?(input) && match_key?(input) && match_value?(input) }
32
+ end
33
+
34
+ private
35
+
36
+ ##
37
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
38
+ # @return [Boolean]
39
+ #
40
+ def match_service_class?(input)
41
+ result.step.service_class == Services::RunOwnMethodInOrganizer
42
+ end
43
+
44
+ ##
45
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
46
+ # @return [Boolean]
47
+ #
48
+ def match_key?(input)
49
+ input.key.to_sym == :method_name
50
+ end
51
+
52
+ ##
53
+ # @param input [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
54
+ # @return [Boolean]
55
+ #
56
+ def match_value?(input)
57
+ input.value.to_sym == :result
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class FindResultServiceStep < Support::Command
11
+ ##
12
+ # @!attribute result [r]
13
+ # @return [ConvenientService::Service::Plugins::HasResult::Entities::Result]
14
+ #
15
+ attr_reader :result
16
+
17
+ ##
18
+ # @!attribute service_class [r]
19
+ # @return [Class]
20
+ #
21
+ attr_reader :service_class
22
+
23
+ ##
24
+ # @param result [ConvenientService::Service::Plugins::HasResult::Entities::Result]
25
+ # @param service_class [Class]
26
+ # @return [void]
27
+ #
28
+ def initialize(result:, service_class:)
29
+ @result = result
30
+ @service_class = service_class
31
+ end
32
+
33
+ ##
34
+ # @return [ConvenientService::Service::Plugins::HasResultSteps::Entities::Method]
35
+ #
36
+ def call
37
+ return nil unless result.step
38
+
39
+ result.step.service_class == service_class
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class GenerateExpectedStepPart < Support::Command
11
+ ##
12
+ # @!attribute step [r]
13
+ # @return [Class, Symbol]
14
+ #
15
+ attr_reader :step
16
+
17
+ ##
18
+ # @param step [Class, Symbol]
19
+ # @return [void]
20
+ #
21
+ def initialize(step:)
22
+ @step = step
23
+ end
24
+
25
+ ##
26
+ # @return [String]
27
+ #
28
+ def call
29
+ if step.nil?
30
+ "without step"
31
+ else
32
+ "of step `#{step}`"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class GenerateGotStepPart < Support::Command
11
+ ##
12
+ # @!attribute result [r]
13
+ # @return [ConvenientService::Service::Plugins::HasResult::Entities::Result]
14
+ #
15
+ attr_reader :result
16
+
17
+ ##
18
+ # @param result [ConvenientService::Service::Plugins::HasResult::Entities::Result]
19
+ # @return [void]
20
+ #
21
+ def initialize(result:)
22
+ @result = result
23
+ end
24
+
25
+ ##
26
+ # @return [String]
27
+ #
28
+ def call
29
+ if result.step.nil?
30
+ "without step"
31
+ else
32
+ "of step `#{result.step.service.klass}`"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Commands
10
+ class MatchResultStep < Support::Command
11
+ ##
12
+ # @!attribute result [r]
13
+ # @return [ConvenientService::Service::Plugins::HasResult::Entities::Result]
14
+ #
15
+ attr_reader :result
16
+
17
+ ##
18
+ # @!attribute step [r]
19
+ # @return [Class, Symbol]
20
+ #
21
+ attr_reader :step
22
+
23
+ ##
24
+ # @param result [ConvenientService::Service::Plugins::HasResult::Entities::Result]
25
+ # @param step [Class, Symbol]
26
+ # @return [void]
27
+ #
28
+ def initialize(result:, step:)
29
+ @result = result
30
+ @step = step
31
+ end
32
+
33
+ ##
34
+ # @return [Boolean]
35
+ # @raise [ConvenientService::RSpec::Matchers::Custom::Results::Base::Errors::InvalidStep]
36
+ #
37
+ def call
38
+ case step
39
+ when ::Class then match_service_step?
40
+ when :result then match_result_method_step?
41
+ when ::Symbol then match_method_step?
42
+ when nil then match_without_step?
43
+ else raise Errors::InvalidStep.new(step: step)
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ ##
50
+ # @return [Boolean]
51
+ #
52
+ def match_service_step?
53
+ service_step = Commands::FindResultServiceStep.call(result: result, service_class: step)
54
+
55
+ Utils::Bool.to_bool(service_step)
56
+ end
57
+
58
+ ##
59
+ # @return [Boolean]
60
+ #
61
+ def match_result_method_step?
62
+ result_method_step = Commands::FindResultResultMethodStep.call(result: result)
63
+
64
+ Utils::Bool.to_bool(result_method_step)
65
+ end
66
+
67
+ ##
68
+ # @return [Boolean]
69
+ #
70
+ def match_method_step?
71
+ method_step = Commands::FindResultMethodStep.call(result: result, method_name: step)
72
+
73
+ Utils::Bool.to_bool(method_step)
74
+ end
75
+
76
+ ##
77
+ # @return [Boolean]
78
+ #
79
+ def match_without_step?
80
+ result.step.nil?
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "commands/find_result_method_step"
4
+ require_relative "commands/find_result_result_method_step"
5
+ require_relative "commands/find_result_service_step"
6
+
7
+ require_relative "commands/generate_expected_step_part"
8
+ require_relative "commands/generate_got_step_part"
9
+
10
+ require_relative "commands/match_result_step"
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module RSpec
5
+ module Matchers
6
+ module Custom
7
+ module Results
8
+ class Base
9
+ module Errors
10
+ class InvalidStep < ConvenientService::Error
11
+ def initialize(step:)
12
+ message = <<~TEXT
13
+ Step `#{step}` is NOT valid.
14
+
15
+ `of_step` only accepts a Class or a Symbol. For example:
16
+
17
+ be_success.of_step(ReadFileContent)
18
+ be_success.of_step(:validate_path)
19
+ be_success.of_step(:result)
20
+
21
+ If you need to confirm that `result` has NO step - use `without_step` instead.
22
+
23
+ be_success.without_step
24
+ TEXT
25
+
26
+ super(message)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end