convenient_service 0.14.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/.github/contributing.md +15 -0
  3. data/.github/workflows/cd.yml +5 -4
  4. data/.github/workflows/ci.yml +5 -5
  5. data/.gitignore +15 -1
  6. data/.ruby-version +1 -1
  7. data/.tool-versions +1 -1
  8. data/.vscode/CacheItsValue.code-snippets +1 -1
  9. data/.yardopts +4 -1
  10. data/CHANGELOG.md +29 -0
  11. data/COMM-LICENSE.txt +99 -0
  12. data/LICENSE.txt +7 -19
  13. data/README.md +1 -1
  14. data/ROADMAP.md +14 -7
  15. data/Taskfile.yml +14 -2
  16. data/docs/.gitkeep +0 -0
  17. data/docs/api/.gitkeep +0 -0
  18. data/lib/convenient_service/dependencies.rb +2 -2
  19. data/lib/convenient_service/examples/dry/gemfile.rb +4 -2
  20. data/lib/convenient_service/examples/dry/v1/gemfile.rb +4 -2
  21. data/lib/convenient_service/examples/rails/gemfile.rb +4 -2
  22. data/lib/convenient_service/examples/rails/v1/gemfile.rb +4 -2
  23. data/lib/convenient_service/examples/standard/cowsay.rb +4 -2
  24. data/lib/convenient_service/examples/standard/date_time.rb +4 -2
  25. data/lib/convenient_service/examples/standard/factorial.rb +4 -2
  26. data/lib/convenient_service/examples/standard/gemfile.rb +4 -2
  27. data/lib/convenient_service/examples/standard/request_params.rb +4 -2
  28. data/lib/convenient_service/examples/standard/v1/cowsay.rb +1 -1
  29. data/lib/convenient_service/examples/standard/v1/date_time.rb +1 -1
  30. data/lib/convenient_service/examples/standard/v1/factorial.rb +1 -1
  31. data/lib/convenient_service/examples/standard/v1/gemfile.rb +1 -1
  32. data/lib/convenient_service/examples/standard/v1/request_params.rb +1 -1
  33. data/lib/convenient_service/feature/configs/aliases.rb +9 -0
  34. data/lib/convenient_service/feature/configs/standard.rb +22 -0
  35. data/lib/convenient_service/feature/configs.rb +5 -0
  36. data/lib/convenient_service/feature/plugins/aliases.rb +7 -0
  37. data/lib/convenient_service/feature/plugins/can_have_entries/commands/define_entry.rb +63 -0
  38. data/lib/convenient_service/feature/plugins/can_have_entries/commands.rb +3 -0
  39. data/lib/convenient_service/feature/plugins/can_have_entries/concern.rb +24 -0
  40. data/lib/convenient_service/feature/plugins/can_have_entries/exceptions.rb +35 -0
  41. data/lib/convenient_service/feature/plugins/can_have_entries.rb +5 -0
  42. data/lib/convenient_service/feature/plugins.rb +5 -0
  43. data/lib/convenient_service/feature.rb +2 -9
  44. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/constants.rb +1 -1
  45. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities/result_spec.rb +8 -8
  46. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities/stubbed_service.rb +6 -6
  47. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service.rb +1 -1
  48. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/entities/wrapped_method.rb +6 -6
  49. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/exceptions.rb +1 -1
  50. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method.rb +2 -2
  51. data/lib/convenient_service/rspec/helpers/classes.rb +4 -0
  52. data/lib/convenient_service/rspec/helpers/ignoring_exception.rb +1 -1
  53. data/lib/convenient_service/rspec/helpers/stub_service.rb +5 -5
  54. data/lib/convenient_service/rspec/helpers/wrap_method.rb +1 -1
  55. data/lib/convenient_service/rspec/helpers.rb +4 -6
  56. data/lib/convenient_service/rspec/matchers/call_chain_next.rb +1 -1
  57. data/lib/convenient_service/rspec/matchers/{custom → classes}/call_chain_next.rb +8 -8
  58. data/lib/convenient_service/rspec/matchers/{custom → classes}/export.rb +1 -1
  59. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/constants.rb +1 -1
  60. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/chain.rb +1 -1
  61. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_code_part.rb +4 -4
  62. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_data_part.rb +4 -4
  63. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_message_part.rb +4 -4
  64. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_parts.rb +3 -3
  65. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_service_part.rb +4 -4
  66. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_status_part.rb +4 -4
  67. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_step_part.rb +4 -4
  68. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_parts.rb +3 -3
  69. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_service_part.rb +4 -4
  70. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_step_part.rb +4 -4
  71. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base.rb +4 -4
  72. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error/commands/generate_got_jsend_attributes_part.rb +4 -4
  73. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error.rb +1 -1
  74. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure/commands/generate_got_jsend_attributes_part.rb +4 -4
  75. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure.rb +1 -1
  76. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/null.rb +1 -1
  77. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success/commands/generate_got_jsend_attributes_part.rb +4 -4
  78. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success.rb +1 -1
  79. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers.rb +3 -3
  80. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result.rb +4 -4
  81. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_code.rb +5 -5
  82. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_data.rb +5 -5
  83. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_message.rb +5 -5
  84. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_service.rb +5 -5
  85. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_status.rb +5 -5
  86. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_step.rb +6 -6
  87. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_type.rb +5 -5
  88. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator.rb +3 -3
  89. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/exceptions.rb +1 -1
  90. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base.rb +15 -15
  91. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_error.rb +1 -1
  92. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_failure.rb +1 -1
  93. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_error.rb +1 -1
  94. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_failure.rb +1 -1
  95. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_success.rb +1 -1
  96. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_success.rb +1 -1
  97. data/lib/convenient_service/rspec/matchers/classes.rb +5 -0
  98. data/lib/convenient_service/rspec/matchers/delegate_to.rb +1 -1
  99. data/lib/convenient_service/rspec/matchers/export.rb +1 -1
  100. data/lib/convenient_service/rspec/matchers/include_module.rb +1 -1
  101. data/lib/convenient_service/rspec/matchers/results/be_error.rb +1 -1
  102. data/lib/convenient_service/rspec/matchers/results/be_failure.rb +1 -1
  103. data/lib/convenient_service/rspec/matchers/results/be_not_error.rb +1 -1
  104. data/lib/convenient_service/rspec/matchers/results/be_not_failure.rb +1 -1
  105. data/lib/convenient_service/rspec/matchers/results/be_not_success.rb +1 -1
  106. data/lib/convenient_service/rspec/matchers/results/be_result.rb +6 -6
  107. data/lib/convenient_service/rspec/matchers/results/be_success.rb +1 -1
  108. data/lib/convenient_service/rspec/matchers.rb +6 -28
  109. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/ignoring_exception/exceptions.rb +2 -2
  110. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/ignoring_exception.rb +3 -3
  111. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/in_threads.rb +2 -2
  112. data/lib/convenient_service/rspec/primitive_helpers/classes.rb +4 -0
  113. data/lib/convenient_service/rspec/primitive_helpers/ignoring_exception.rb +13 -0
  114. data/lib/convenient_service/rspec/{helpers → primitive_helpers}/in_threads.rb +2 -2
  115. data/lib/convenient_service/rspec/primitive_helpers.rb +19 -0
  116. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/be_descendant_of.rb +2 -2
  117. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/be_direct_descendant_of.rb +2 -2
  118. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/cache_its_value.rb +2 -2
  119. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/be_descendant_of.rb +2 -2
  120. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/be_direct_descendant_of.rb +2 -2
  121. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/cache_its_value.rb +2 -2
  122. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/commands/generate_printable_method.rb +2 -2
  123. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/apply_stub_to_track_delegations.rb +4 -4
  124. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/generate_printable_arguments.rb +4 -4
  125. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments.rb +2 -2
  126. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/base.rb +5 -5
  127. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/return_its_value.rb +2 -2
  128. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_any_arguments.rb +2 -2
  129. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_concrete_arguments.rb +2 -2
  130. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/without_arguments.rb +2 -2
  131. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/base.rb +4 -4
  132. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/with_calling_original.rb +2 -2
  133. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/without_calling_original.rb +2 -2
  134. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings_collection/exceptions.rb +2 -2
  135. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings_collection.rb +13 -13
  136. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/delegation.rb +3 -3
  137. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher.rb +13 -13
  138. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to.rb +13 -13
  139. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/extend_module.rb +2 -2
  140. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_abstract_method.rb +2 -2
  141. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_alias_method.rb +2 -2
  142. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_accessor.rb +4 -4
  143. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_reader.rb +2 -2
  144. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_writer.rb +2 -2
  145. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/include_module.rb +2 -2
  146. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/prepend_module.rb +2 -2
  147. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/singleton_prepend_module.rb +2 -2
  148. data/lib/convenient_service/rspec/primitive_matchers/classes.rb +15 -0
  149. data/lib/convenient_service/rspec/primitive_matchers/delegate_to.rb +13 -0
  150. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/extend_module.rb +2 -2
  151. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_abstract_method.rb +2 -2
  152. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_alias_method.rb +2 -2
  153. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_accessor.rb +2 -2
  154. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_reader.rb +2 -2
  155. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_writer.rb +2 -2
  156. data/lib/convenient_service/rspec/primitive_matchers/include_module.rb +13 -0
  157. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/prepend_module.rb +2 -2
  158. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/singleton_prepend_module.rb +2 -2
  159. data/lib/convenient_service/rspec/primitive_matchers.rb +41 -0
  160. data/lib/convenient_service/rspec.rb +3 -0
  161. data/lib/convenient_service/{configs → service/configs}/aliases.rb +1 -1
  162. data/lib/convenient_service/{configs → service/configs}/awesome_print_inspect/aliases.rb +1 -1
  163. data/lib/convenient_service/service/configs/awesome_print_inspect.rb +61 -0
  164. data/lib/convenient_service/service/configs/minimal.rb +261 -0
  165. data/lib/convenient_service/{configs → service/configs}/standard/aliases.rb +1 -1
  166. data/lib/convenient_service/service/configs/standard/v1.rb +185 -0
  167. data/lib/convenient_service/service/configs/standard.rb +238 -0
  168. data/lib/convenient_service/service/plugins/can_have_steps/concern.rb +9 -3
  169. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value/exceptions.rb +32 -0
  170. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value/middleware.rb +33 -0
  171. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value.rb +4 -0
  172. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins.rb +1 -0
  173. data/lib/convenient_service/service/plugins/can_have_steps/entities/step_collection.rb +16 -0
  174. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/concern/instance_methods.rb +24 -0
  175. data/lib/convenient_service/service.rb +1 -0
  176. data/lib/convenient_service/support/dependency_container/commands.rb +0 -1
  177. data/lib/convenient_service/support/dependency_container.rb +0 -1
  178. data/lib/convenient_service/version.rb +1 -1
  179. data/lib/convenient_service.rb +0 -1
  180. data/yard/yard-convenient_service_concern.rb +45 -0
  181. metadata +143 -120
  182. data/lib/convenient_service/configs/awesome_print_inspect.rb +0 -59
  183. data/lib/convenient_service/configs/minimal.rb +0 -257
  184. data/lib/convenient_service/configs/standard/v1.rb +0 -183
  185. data/lib/convenient_service/configs/standard.rb +0 -234
  186. data/lib/convenient_service/rspec/helpers/custom.rb +0 -6
  187. data/lib/convenient_service/rspec/matchers/custom.rb +0 -18
  188. data/lib/convenient_service/support/dependency_container/commands/define_entry.rb +0 -49
  189. data/lib/convenient_service/support/dependency_container/entry.rb +0 -22
  190. /data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities.rb +0 -0
  191. /data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/entities.rb +0 -0
  192. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands.rb +0 -0
  193. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error/commands.rb +0 -0
  194. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure/commands.rb +0 -0
  195. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success/commands.rb +0 -0
  196. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands.rb +0 -0
  197. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities.rb +0 -0
  198. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results.rb +0 -0
  199. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/commands.rb +0 -0
  200. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands.rb +0 -0
  201. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings.rb +0 -0
  202. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities.rb +0 -0
  203. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities.rb +0 -0
  204. /data/lib/convenient_service/{configs.rb → service/configs.rb} +0 -0
@@ -9,6 +9,14 @@ module ConvenientService
9
9
 
10
10
  instance_methods do
11
11
  ##
12
+ # @api public
13
+ #
14
+ # @note May be useful for debugging purposes.
15
+ # @see https://marian13.github.io/convenient_service_docs/guides/how_to_debug_services_via_callbacks
16
+ #
17
+ # @note `steps` are frozen.
18
+ # @see https://marian13.github.io/convenient_service_docs/faq#is-it-possible-to-modify-the-step-collection-from-a-callback
19
+ #
12
20
  # @return [Array<ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step>]
13
21
  #
14
22
  # @internal
@@ -20,6 +28,7 @@ module ConvenientService
20
28
  .steps
21
29
  .tap(&:commit!)
22
30
  .map { |step| step.copy(overrides: {kwargs: {organizer: self}}) }
31
+ .freeze
23
32
  end
24
33
  end
25
34
 
@@ -52,9 +61,6 @@ module ConvenientService
52
61
  end
53
62
 
54
63
  ##
55
- # @param value [Object] Can be any type.
56
- # @return [ConvenientService::Support::RawValue]
57
- #
58
64
  # Allows to pass a value to `in` method without its intermediate processing.
59
65
  # @see https://marian13.github.io/convenient_service_docs/basics/step_to_result_translation_table
60
66
  #
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Service
5
+ module Plugins
6
+ module CanHaveSteps
7
+ module Entities
8
+ class Step
9
+ module Plugins
10
+ module RaisesOnNotResultReturnValue
11
+ module Exceptions
12
+ class ReturnValueNotKindOfResult < ::ConvenientService::Exception
13
+ def initialize(step:, result:)
14
+ message = <<~TEXT
15
+ Return value of step `#{step.printable_service}` is NOT a `Result`.
16
+ It is `#{result.class}`.
17
+
18
+ Did you forget to call `success`, `failure`, or `error`?
19
+ TEXT
20
+
21
+ super(message)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Service
5
+ module Plugins
6
+ module CanHaveSteps
7
+ module Entities
8
+ class Step
9
+ module Plugins
10
+ module RaisesOnNotResultReturnValue
11
+ class Middleware < MethodChainMiddleware
12
+ include Support::DependencyContainer::Import
13
+
14
+ import :"commands.is_result?", from: ::ConvenientService::Service::Plugins::HasJSendResult::Container
15
+
16
+ intended_for any_method, entity: :step
17
+
18
+ def next(...)
19
+ original_result = chain.next(...)
20
+
21
+ return original_result if commands.is_result?(original_result)
22
+
23
+ raise Exceptions::ReturnValueNotKindOfResult.new(step: entity, result: original_result)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "raises_on_not_result_return_value/exceptions"
4
+ require_relative "raises_on_not_result_return_value/middleware"
@@ -6,5 +6,6 @@ require_relative "plugins/can_be_result_step"
6
6
  require_relative "plugins/can_have_fallbacks"
7
7
  require_relative "plugins/can_have_parent_result"
8
8
  require_relative "plugins/has_inspect"
9
+ require_relative "plugins/raises_on_not_result_return_value"
9
10
 
10
11
  require_relative "plugins/aliases"
@@ -9,12 +9,16 @@ module ConvenientService
9
9
  include ::Enumerable
10
10
 
11
11
  ##
12
+ # @api private
13
+ #
12
14
  # @!attribute [r] steps
13
15
  # @return [Array<ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step>]
14
16
  #
15
17
  attr_reader :steps
16
18
 
17
19
  ##
20
+ # @api private
21
+ #
18
22
  # @param steps [Array<ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step>]
19
23
  # @return [void]
20
24
  #
@@ -23,6 +27,8 @@ module ConvenientService
23
27
  end
24
28
 
25
29
  ##
30
+ # @api public
31
+ #
26
32
  # @return [Boolean] true if called for the first time, false otherwise (similarly as Kernel#require).
27
33
  #
28
34
  # @see https://ruby-doc.org/core-3.1.2/Kernel.html#method-i-require
@@ -41,6 +47,8 @@ module ConvenientService
41
47
  end
42
48
 
43
49
  ##
50
+ # @api public
51
+ #
44
52
  # @return [Boolean]
45
53
  #
46
54
  def committed?
@@ -48,6 +56,8 @@ module ConvenientService
48
56
  end
49
57
 
50
58
  ##
59
+ # @api public
60
+ #
51
61
  # @param block [Proc, nil]
52
62
  # @return [Array<ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step>, Enumerator]
53
63
  #
@@ -56,6 +66,8 @@ module ConvenientService
56
66
  end
57
67
 
58
68
  ##
69
+ # @api public
70
+ #
59
71
  # Returns step by index.
60
72
  #
61
73
  # @param index [Integer]
@@ -69,6 +81,8 @@ module ConvenientService
69
81
  end
70
82
 
71
83
  ##
84
+ # @api private
85
+ #
72
86
  # @param step [ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step]
73
87
  # @return [ConvenientService::Service::Plugins::CanHaveSteps::Entities::StepCollection]
74
88
  #
@@ -79,6 +93,8 @@ module ConvenientService
79
93
  end
80
94
 
81
95
  ##
96
+ # @api public
97
+ #
82
98
  # @param other [Object] Can be any type.
83
99
  # @return [Boolean, nil]
84
100
  #
@@ -69,6 +69,30 @@ module ConvenientService
69
69
  # @see https://rspec.info/documentation/3.12/rspec-mocks/RSpec/Mocks/ArgumentMatchers.html
70
70
  # @see https://github.com/rspec/rspec-mocks/blob/v3.12.3/lib/rspec/mocks/argument_matchers.rb#L282
71
71
  #
72
+ # @example Just code does NOT work in case/when.
73
+ #
74
+ # case result.code # `result.code` returns fancy object
75
+ # when :full_queue
76
+ # notify_devops
77
+ # when :duplicated_job
78
+ # notify_devs
79
+ # else
80
+ # # ...
81
+ # end
82
+ #
83
+ # @example Code converted to symbol works in case/when.
84
+ #
85
+ # case result.code.to_sym
86
+ # when :full_queue
87
+ # notify_devops
88
+ # when :duplicated_job
89
+ # notify_devs
90
+ # else
91
+ # # ...
92
+ # end
93
+ #
94
+ # @see https://userdocs.convenientservice.org/faq#why-casewhen-does-not-work-with-just-result-codes
95
+ #
72
96
  # @internal
73
97
  # IMPORTANT: Must be kept in sync with `#==`.
74
98
  # NOTE: Ruby does NOT have `!==` operator.
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "service/plugins"
4
+ require_relative "service/configs"
@@ -4,5 +4,4 @@ require_relative "commands/assert_valid_scope"
4
4
  require_relative "commands/assert_valid_container"
5
5
  require_relative "commands/assert_valid_method"
6
6
  require_relative "commands/create_methods_module"
7
- require_relative "commands/define_entry"
8
7
  require_relative "commands/import_method"
@@ -5,7 +5,6 @@ require_relative "dependency_container/constants"
5
5
  require_relative "dependency_container/entities"
6
6
  require_relative "dependency_container/exceptions"
7
7
 
8
- require_relative "dependency_container/entry"
9
8
  require_relative "dependency_container/export"
10
9
  require_relative "dependency_container/import"
11
10
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConvenientService
4
- VERSION = "0.14.0"
4
+ VERSION = "0.16.0"
5
5
  end
@@ -28,7 +28,6 @@ require_relative "convenient_service/core"
28
28
  #
29
29
  require_relative "convenient_service/common"
30
30
  require_relative "convenient_service/service"
31
- require_relative "convenient_service/configs"
32
31
 
33
32
  ##
34
33
  # @internal
@@ -0,0 +1,45 @@
1
+ require "yard"
2
+
3
+ ##
4
+ # This file is used to allow parsing of yard docs inside `included`, `instance_methods` and `class_methods` blocks.
5
+ #
6
+ # It is loaded by the `RUBYLIB` ENV variable passed to `task docs:generate` in `Taskfile`.
7
+ #
8
+ # @see https://rubydoc.info/gems/yard/file/docs/GettingStarted.md#plugin-support
9
+ # @see https://github.com/digitalcuisine/yard-activesupport-concern
10
+ # @see https://github.com/digitalcuisine/yard-activesupport-concern/blob/v0.0.1/lib/yard-activesupport-concern.rb
11
+ # @see https://stackoverflow.com/a/901109/12201472
12
+ #
13
+ module YARD
14
+ module Concern
15
+ class IncludedHandler < YARD::Handlers::Ruby::Base
16
+ handles method_call(:included)
17
+
18
+ namespace_only
19
+
20
+ def process
21
+ parse_block(statement.last.last, namespace: namespace, scope: :instance)
22
+ end
23
+ end
24
+
25
+ class InstanceMethodsHandler < YARD::Handlers::Ruby::Base
26
+ handles method_call(:instance_methods)
27
+
28
+ namespace_only
29
+
30
+ def process
31
+ parse_block(statement.last.last, namespace: namespace, scope: :instance)
32
+ end
33
+ end
34
+
35
+ class ClassMethodsHandler < YARD::Handlers::Ruby::Base
36
+ handles method_call(:class_methods)
37
+
38
+ namespace_only
39
+
40
+ def process
41
+ parse_block(statement.last.last, namespace: namespace, scope: :class)
42
+ end
43
+ end
44
+ end
45
+ end