convenient_service 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.vscode/CacheItsValue.code-snippets +1 -1
  4. data/.yardopts +3 -0
  5. data/CHANGELOG.md +22 -0
  6. data/README.md +1 -1
  7. data/Taskfile.yml +14 -2
  8. data/lib/convenient_service/dependencies.rb +2 -2
  9. data/lib/convenient_service/examples/dry/gemfile.rb +1 -1
  10. data/lib/convenient_service/examples/dry/v1/gemfile.rb +1 -1
  11. data/lib/convenient_service/examples/rails/gemfile.rb +1 -1
  12. data/lib/convenient_service/examples/rails/v1/gemfile.rb +1 -1
  13. data/lib/convenient_service/examples/standard/cowsay.rb +1 -1
  14. data/lib/convenient_service/examples/standard/date_time.rb +1 -1
  15. data/lib/convenient_service/examples/standard/factorial.rb +1 -1
  16. data/lib/convenient_service/examples/standard/gemfile.rb +1 -1
  17. data/lib/convenient_service/examples/standard/request_params.rb +1 -1
  18. data/lib/convenient_service/examples/standard/v1/cowsay.rb +1 -1
  19. data/lib/convenient_service/examples/standard/v1/date_time.rb +1 -1
  20. data/lib/convenient_service/examples/standard/v1/factorial.rb +1 -1
  21. data/lib/convenient_service/examples/standard/v1/gemfile.rb +1 -1
  22. data/lib/convenient_service/examples/standard/v1/request_params.rb +1 -1
  23. data/lib/convenient_service/feature/configs/aliases.rb +9 -0
  24. data/lib/convenient_service/feature/configs/standard.rb +22 -0
  25. data/lib/convenient_service/feature/configs.rb +5 -0
  26. data/lib/convenient_service/feature/plugins/aliases.rb +7 -0
  27. data/lib/convenient_service/feature/plugins/can_have_entries/commands/define_entry.rb +51 -0
  28. data/lib/convenient_service/feature/plugins/can_have_entries/commands.rb +3 -0
  29. data/lib/convenient_service/feature/plugins/can_have_entries/concern.rb +24 -0
  30. data/lib/convenient_service/feature/plugins/can_have_entries.rb +4 -0
  31. data/lib/convenient_service/feature/plugins.rb +5 -0
  32. data/lib/convenient_service/feature.rb +2 -9
  33. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/constants.rb +1 -1
  34. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities/result_spec.rb +8 -8
  35. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities/stubbed_service.rb +6 -6
  36. data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service.rb +1 -1
  37. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/entities/wrapped_method.rb +6 -6
  38. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/exceptions.rb +1 -1
  39. data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method.rb +2 -2
  40. data/lib/convenient_service/rspec/helpers/classes.rb +4 -0
  41. data/lib/convenient_service/rspec/helpers/ignoring_exception.rb +1 -1
  42. data/lib/convenient_service/rspec/helpers/stub_service.rb +5 -5
  43. data/lib/convenient_service/rspec/helpers/wrap_method.rb +1 -1
  44. data/lib/convenient_service/rspec/helpers.rb +4 -6
  45. data/lib/convenient_service/rspec/matchers/call_chain_next.rb +1 -1
  46. data/lib/convenient_service/rspec/matchers/{custom → classes}/call_chain_next.rb +8 -8
  47. data/lib/convenient_service/rspec/matchers/{custom → classes}/export.rb +1 -1
  48. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/constants.rb +1 -1
  49. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/chain.rb +1 -1
  50. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_code_part.rb +4 -4
  51. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_data_part.rb +4 -4
  52. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_message_part.rb +4 -4
  53. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_parts.rb +3 -3
  54. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_service_part.rb +4 -4
  55. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_status_part.rb +4 -4
  56. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_expected_step_part.rb +4 -4
  57. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_parts.rb +3 -3
  58. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_service_part.rb +4 -4
  59. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands/generate_got_step_part.rb +4 -4
  60. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base.rb +4 -4
  61. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error/commands/generate_got_jsend_attributes_part.rb +4 -4
  62. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error.rb +1 -1
  63. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure/commands/generate_got_jsend_attributes_part.rb +4 -4
  64. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure.rb +1 -1
  65. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/null.rb +1 -1
  66. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success/commands/generate_got_jsend_attributes_part.rb +4 -4
  67. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success.rb +1 -1
  68. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers.rb +3 -3
  69. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result.rb +4 -4
  70. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_code.rb +5 -5
  71. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_data.rb +5 -5
  72. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_message.rb +5 -5
  73. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_service.rb +5 -5
  74. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_status.rb +5 -5
  75. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_step.rb +6 -6
  76. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands/validate_result_type.rb +5 -5
  77. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator.rb +3 -3
  78. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/exceptions.rb +1 -1
  79. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base.rb +15 -15
  80. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_error.rb +1 -1
  81. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_failure.rb +1 -1
  82. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_error.rb +1 -1
  83. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_failure.rb +1 -1
  84. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_not_success.rb +1 -1
  85. data/lib/convenient_service/rspec/matchers/{custom → classes}/results/be_success.rb +1 -1
  86. data/lib/convenient_service/rspec/matchers/classes.rb +5 -0
  87. data/lib/convenient_service/rspec/matchers/delegate_to.rb +1 -1
  88. data/lib/convenient_service/rspec/matchers/export.rb +1 -1
  89. data/lib/convenient_service/rspec/matchers/include_module.rb +1 -1
  90. data/lib/convenient_service/rspec/matchers/results/be_error.rb +1 -1
  91. data/lib/convenient_service/rspec/matchers/results/be_failure.rb +1 -1
  92. data/lib/convenient_service/rspec/matchers/results/be_not_error.rb +1 -1
  93. data/lib/convenient_service/rspec/matchers/results/be_not_failure.rb +1 -1
  94. data/lib/convenient_service/rspec/matchers/results/be_not_success.rb +1 -1
  95. data/lib/convenient_service/rspec/matchers/results/be_result.rb +6 -6
  96. data/lib/convenient_service/rspec/matchers/results/be_success.rb +1 -1
  97. data/lib/convenient_service/rspec/matchers.rb +6 -28
  98. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/ignoring_exception/exceptions.rb +2 -2
  99. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/ignoring_exception.rb +3 -3
  100. data/lib/convenient_service/rspec/{helpers/custom → primitive_helpers/classes}/in_threads.rb +2 -2
  101. data/lib/convenient_service/rspec/primitive_helpers/classes.rb +4 -0
  102. data/lib/convenient_service/rspec/primitive_helpers/ignoring_exception.rb +13 -0
  103. data/lib/convenient_service/rspec/{helpers → primitive_helpers}/in_threads.rb +2 -2
  104. data/lib/convenient_service/rspec/primitive_helpers.rb +19 -0
  105. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/be_descendant_of.rb +2 -2
  106. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/be_direct_descendant_of.rb +2 -2
  107. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/cache_its_value.rb +2 -2
  108. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/be_descendant_of.rb +2 -2
  109. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/be_direct_descendant_of.rb +2 -2
  110. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/cache_its_value.rb +2 -2
  111. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/commands/generate_printable_method.rb +2 -2
  112. 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
  113. 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
  114. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments.rb +2 -2
  115. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/base.rb +5 -5
  116. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/return_its_value.rb +2 -2
  117. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_any_arguments.rb +2 -2
  118. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_concrete_arguments.rb +2 -2
  119. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/without_arguments.rb +2 -2
  120. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/base.rb +4 -4
  121. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/with_calling_original.rb +2 -2
  122. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/values/without_calling_original.rb +2 -2
  123. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings_collection/exceptions.rb +2 -2
  124. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings_collection.rb +13 -13
  125. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/delegation.rb +3 -3
  126. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher.rb +13 -13
  127. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to.rb +13 -13
  128. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/extend_module.rb +2 -2
  129. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_abstract_method.rb +2 -2
  130. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_alias_method.rb +2 -2
  131. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_accessor.rb +4 -4
  132. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_reader.rb +2 -2
  133. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/have_attr_writer.rb +2 -2
  134. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/include_module.rb +2 -2
  135. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/prepend_module.rb +2 -2
  136. data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/singleton_prepend_module.rb +2 -2
  137. data/lib/convenient_service/rspec/primitive_matchers/classes.rb +15 -0
  138. data/lib/convenient_service/rspec/primitive_matchers/delegate_to.rb +13 -0
  139. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/extend_module.rb +2 -2
  140. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_abstract_method.rb +2 -2
  141. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_alias_method.rb +2 -2
  142. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_accessor.rb +2 -2
  143. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_reader.rb +2 -2
  144. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/have_attr_writer.rb +2 -2
  145. data/lib/convenient_service/rspec/primitive_matchers/include_module.rb +13 -0
  146. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/prepend_module.rb +2 -2
  147. data/lib/convenient_service/rspec/{matchers → primitive_matchers}/singleton_prepend_module.rb +2 -2
  148. data/lib/convenient_service/rspec/primitive_matchers.rb +41 -0
  149. data/lib/convenient_service/rspec.rb +3 -0
  150. data/lib/convenient_service/{configs → service/configs}/aliases.rb +1 -1
  151. data/lib/convenient_service/{configs → service/configs}/awesome_print_inspect/aliases.rb +1 -1
  152. data/lib/convenient_service/service/configs/awesome_print_inspect.rb +61 -0
  153. data/lib/convenient_service/service/configs/minimal.rb +261 -0
  154. data/lib/convenient_service/{configs → service/configs}/standard/aliases.rb +1 -1
  155. data/lib/convenient_service/service/configs/standard/v1.rb +185 -0
  156. data/lib/convenient_service/service/configs/standard.rb +238 -0
  157. data/lib/convenient_service/service/plugins/can_have_steps/concern.rb +9 -3
  158. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value/exceptions.rb +32 -0
  159. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value/middleware.rb +33 -0
  160. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/raises_on_not_result_return_value.rb +4 -0
  161. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins.rb +1 -0
  162. data/lib/convenient_service/service/plugins/can_have_steps/entities/step_collection.rb +16 -0
  163. data/lib/convenient_service/service.rb +1 -0
  164. data/lib/convenient_service/support/dependency_container/commands.rb +0 -1
  165. data/lib/convenient_service/support/dependency_container.rb +0 -1
  166. data/lib/convenient_service/version.rb +1 -1
  167. data/lib/convenient_service.rb +0 -1
  168. data/yard/yard-convenient_service_concern.rb +45 -0
  169. metadata +137 -119
  170. data/lib/convenient_service/configs/awesome_print_inspect.rb +0 -59
  171. data/lib/convenient_service/configs/minimal.rb +0 -257
  172. data/lib/convenient_service/configs/standard/v1.rb +0 -183
  173. data/lib/convenient_service/configs/standard.rb +0 -234
  174. data/lib/convenient_service/rspec/helpers/custom.rb +0 -6
  175. data/lib/convenient_service/rspec/matchers/custom.rb +0 -18
  176. data/lib/convenient_service/support/dependency_container/commands/define_entry.rb +0 -49
  177. data/lib/convenient_service/support/dependency_container/entry.rb +0 -22
  178. /data/lib/convenient_service/rspec/helpers/{custom → classes}/stub_service/entities.rb +0 -0
  179. /data/lib/convenient_service/rspec/helpers/{custom → classes}/wrap_method/entities.rb +0 -0
  180. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/base/commands.rb +0 -0
  181. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/error/commands.rb +0 -0
  182. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/failure/commands.rb +0 -0
  183. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/printers/success/commands.rb +0 -0
  184. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities/validator/commands.rb +0 -0
  185. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results/base/entities.rb +0 -0
  186. /data/lib/convenient_service/rspec/matchers/{custom → classes}/results.rb +0 -0
  187. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/commands.rb +0 -0
  188. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands.rb +0 -0
  189. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities/chainings.rb +0 -0
  190. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities/matcher/entities.rb +0 -0
  191. /data/lib/convenient_service/rspec/{matchers/custom → primitive_matchers/classes}/delegate_to/entities.rb +0 -0
  192. /data/lib/convenient_service/{configs.rb → service/configs.rb} +0 -0
@@ -0,0 +1,261 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Service
5
+ module Configs
6
+ ##
7
+ # Defines minimal configuration that adds a constructor, JSend-inspired result, steps, basic inspects, and internals to services.
8
+ #
9
+ # @note This config is NOT intented for the end-user usage. Use `Standard` instead.
10
+ #
11
+ # @note
12
+ # `use ConvenientService::Plugins::Common::NormalizesEnv::Middleware` should be used in a config that has the first `concern` that introduces a method.
13
+ # For example, `:result` is added by `use ConvenientService::Plugins::Service::HasJSendResult::Concern` in `Minimal`.
14
+ # That is why the following code is written in the `Minimal` config.
15
+ #
16
+ # middlewares :result do
17
+ # use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
18
+ #
19
+ # # ...
20
+ # end
21
+ #
22
+ # In turn, `:fallback_result` is added by `use ConvenientService::Plugins::Service::CanHaveFallbacks::Concern` in `Standard`.
23
+ # That is why it is the responsibility of the `Standard` config, to define:
24
+ #
25
+ # middlewares :fallback_result do
26
+ # use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
27
+ #
28
+ # # ...
29
+ # end
30
+ #
31
+ # @internal
32
+ # NOTE: Heavily used in specs to test concerns and middlewares in isolation.
33
+ #
34
+ module Minimal
35
+ include Support::Concern
36
+
37
+ ##
38
+ # @internal
39
+ # IMPORTANT: Order of plugins matters.
40
+ #
41
+ # NOTE: `class_exec` (that is used under the hood by `included`) defines `class Result` in the global namespace.
42
+ # That is why `class self::Result` is used.
43
+ # - https://stackoverflow.com/a/51965126/12201472
44
+ #
45
+ # rubocop:disable Lint/ConstantDefinitionInBlock
46
+ included do
47
+ include Core
48
+
49
+ concerns do
50
+ use ConvenientService::Plugins::Common::HasInternals::Concern
51
+
52
+ use ConvenientService::Plugins::Service::HasInspect::Concern
53
+
54
+ use ConvenientService::Plugins::Common::HasConstructor::Concern
55
+ use ConvenientService::Plugins::Common::HasConstructorWithoutInitialize::Concern
56
+
57
+ use ConvenientService::Plugins::Service::HasResult::Concern
58
+ use ConvenientService::Plugins::Service::HasJSendResult::Concern
59
+ use ConvenientService::Plugins::Service::CanHaveSteps::Concern
60
+ end
61
+
62
+ middlewares :initialize do
63
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
64
+ end
65
+
66
+ middlewares :result do
67
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
68
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
69
+
70
+ use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware
71
+
72
+ use ConvenientService::Plugins::Service::CanHaveSteps::Middleware
73
+ end
74
+
75
+ middlewares :step do
76
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
77
+ end
78
+
79
+ middlewares :success do
80
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
81
+ end
82
+
83
+ middlewares :failure do
84
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
85
+ end
86
+
87
+ middlewares :error do
88
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
89
+ end
90
+
91
+ middlewares :result, scope: :class do
92
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
93
+ end
94
+
95
+ middlewares :step, scope: :class do
96
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
97
+
98
+ use ConvenientService::Plugins::Service::CanHaveMethodSteps::Middleware
99
+ end
100
+
101
+ class self::Internals
102
+ include Core
103
+
104
+ concerns do
105
+ use ConvenientService::Plugins::Internals::HasCache::Concern
106
+ end
107
+ end
108
+
109
+ class self::Result
110
+ include Core
111
+
112
+ concerns do
113
+ use ConvenientService::Plugins::Common::HasInternals::Concern
114
+
115
+ use ConvenientService::Plugins::Result::HasInspect::Concern
116
+
117
+ use ConvenientService::Plugins::Common::HasConstructor::Concern
118
+ use ConvenientService::Plugins::Common::HasConstructorWithoutInitialize::Concern
119
+
120
+ use ConvenientService::Plugins::Result::HasJSendStatusAndAttributes::Concern
121
+ end
122
+
123
+ middlewares :initialize do
124
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
125
+
126
+ use ConvenientService::Plugins::Result::HasJSendStatusAndAttributes::Middleware
127
+ end
128
+
129
+ middlewares :success? do
130
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
131
+ end
132
+
133
+ middlewares :failure? do
134
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
135
+ end
136
+
137
+ middlewares :error? do
138
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
139
+ end
140
+
141
+ middlewares :not_success? do
142
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
143
+ end
144
+
145
+ middlewares :not_failure? do
146
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
147
+ end
148
+
149
+ middlewares :not_error? do
150
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
151
+ end
152
+
153
+ middlewares :data do
154
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
155
+ end
156
+
157
+ middlewares :message do
158
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
159
+ end
160
+
161
+ middlewares :code do
162
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
163
+ end
164
+
165
+ middlewares :to_kwargs do
166
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
167
+ end
168
+
169
+ class self::Data
170
+ include Core
171
+
172
+ concerns do
173
+ use ConvenientService::Plugins::Data::HasInspect::Concern
174
+ end
175
+ end
176
+
177
+ class self::Message
178
+ include Core
179
+
180
+ concerns do
181
+ use ConvenientService::Plugins::Message::HasInspect::Concern
182
+ end
183
+ end
184
+
185
+ class self::Code
186
+ include Core
187
+
188
+ concerns do
189
+ use ConvenientService::Plugins::Code::HasInspect::Concern
190
+ end
191
+ end
192
+
193
+ class self::Status
194
+ include Core
195
+
196
+ concerns do
197
+ use ConvenientService::Plugins::Status::HasInspect::Concern
198
+ end
199
+ end
200
+
201
+ class self::Internals
202
+ include Core
203
+
204
+ concerns do
205
+ use ConvenientService::Plugins::Internals::HasCache::Concern
206
+ end
207
+ end
208
+ end
209
+
210
+ class self::Step
211
+ include Core
212
+
213
+ concerns do
214
+ use ConvenientService::Plugins::Common::HasInternals::Concern
215
+
216
+ use ConvenientService::Plugins::Step::CanBeCompleted::Concern
217
+
218
+ use ConvenientService::Plugins::Step::CanBeMethodStep::Concern
219
+ use ConvenientService::Plugins::Step::CanBeResultStep::Concern
220
+
221
+ use ConvenientService::Plugins::Step::HasInspect::Concern
222
+ end
223
+
224
+ middlewares :service_result do
225
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
226
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
227
+
228
+ use ConvenientService::Plugins::Step::RaisesOnNotResultReturnValue::Middleware
229
+
230
+ use ConvenientService::Plugins::Step::CanBeResultStep::CanBeExecuted::Middleware
231
+ use ConvenientService::Plugins::Step::CanBeMethodStep::CanBeExecuted::Middleware
232
+ end
233
+
234
+ middlewares :result do
235
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
236
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
237
+ end
238
+
239
+ ##
240
+ # TODO: Rename.
241
+ #
242
+ middlewares :printable_service do
243
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
244
+
245
+ use ConvenientService::Plugins::Step::CanBeMethodStep::CanBePrinted::Middleware
246
+ end
247
+
248
+ class self::Internals
249
+ include Core
250
+
251
+ concerns do
252
+ use ConvenientService::Plugins::Internals::HasCache::Concern
253
+ end
254
+ end
255
+ end
256
+ end
257
+ # rubocop:enable Lint/ConstantDefinitionInBlock
258
+ end
259
+ end
260
+ end
261
+ end
@@ -3,7 +3,7 @@
3
3
  module ConvenientService
4
4
  module Standard
5
5
  module V1
6
- Config = ::ConvenientService::Configs::Standard::V1
6
+ Config = ::ConvenientService::Service::Configs::Standard::V1
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,185 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Service
5
+ module Configs
6
+ ##
7
+ # Default configuration for the user-defined services.
8
+ #
9
+ module Standard
10
+ module V1
11
+ include Support::Concern
12
+
13
+ ##
14
+ # @internal
15
+ # IMPORTANT: Order of plugins matters.
16
+ #
17
+ # NOTE: `class_exec` (that is used under the hood by `included`) defines `class Result` in the global namespace.
18
+ # That is why `class self::Result` is used.
19
+ # - https://stackoverflow.com/a/51965126/12201472
20
+ #
21
+ # rubocop:disable Lint/ConstantDefinitionInBlock
22
+ included do
23
+ include Configs::Minimal
24
+
25
+ concerns do
26
+ use ConvenientService::Plugins::Common::CachesConstructorArguments::Concern
27
+ use ConvenientService::Plugins::Common::CanBeCopied::Concern
28
+ use ConvenientService::Plugins::Service::CanRecalculateResult::Concern
29
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Concern
30
+ use ConvenientService::Plugins::Service::HasJSendResultStatusCheckShortSyntax::Concern
31
+
32
+ use ConvenientService::Plugins::Common::HasCallbacks::Concern
33
+ use ConvenientService::Plugins::Common::HasAroundCallbacks::Concern
34
+
35
+ use ConvenientService::Plugins::Service::HasMermaidFlowchart::Concern
36
+ end
37
+
38
+ middlewares :initialize do
39
+ use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
40
+ use ConvenientService::Plugins::Common::CachesConstructorArguments::Middleware
41
+ end
42
+
43
+ middlewares :result do
44
+ insert_after \
45
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
46
+ ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
47
+
48
+ insert_before \
49
+ ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware,
50
+ ConvenientService::Plugins::Common::HasCallbacks::Middleware
51
+
52
+ insert_after \
53
+ ConvenientService::Plugins::Common::HasCallbacks::Middleware,
54
+ ConvenientService::Plugins::Common::HasAroundCallbacks::Middleware
55
+
56
+ ##
57
+ # TODO: Rewrite. This plugin does NOT do what it states. Probably I was NOT with a clear mind while writing it (facepalm).
58
+ #
59
+ # use ConvenientService::Plugins::Service::RaisesOnDoubleResult::Middleware
60
+
61
+ insert_before \
62
+ ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware,
63
+ ConvenientService::Plugins::Service::SetsParentToForeignResult::Middleware
64
+ end
65
+
66
+ middlewares :step do
67
+ use ConvenientService::Plugins::Common::HasCallbacks::Middleware
68
+ use ConvenientService::Plugins::Common::HasAroundCallbacks::Middleware
69
+ end
70
+
71
+ middlewares :success do
72
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Success::Middleware
73
+ end
74
+
75
+ middlewares :failure do
76
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Failure::Middleware
77
+ end
78
+
79
+ middlewares :error do
80
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Error::Middleware
81
+ end
82
+
83
+ class self::Result
84
+ concerns do
85
+ use ConvenientService::Plugins::Common::HasJSendResultDuckShortSyntax::Concern
86
+ use ConvenientService::Plugins::Result::CanRecalculateResult::Concern
87
+
88
+ use ConvenientService::Plugins::Result::CanHaveStep::Concern
89
+ use ConvenientService::Plugins::Result::CanBeOwnResult::Concern
90
+ use ConvenientService::Plugins::Result::CanHaveParentResult::Concern
91
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Concern
92
+ end
93
+
94
+ middlewares :success? do
95
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
96
+ end
97
+
98
+ middlewares :failure? do
99
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
100
+ end
101
+
102
+ middlewares :error? do
103
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
104
+ end
105
+
106
+ middlewares :not_success? do
107
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
108
+ end
109
+
110
+ middlewares :not_failure? do
111
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
112
+ end
113
+
114
+ middlewares :not_error? do
115
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
116
+ end
117
+
118
+ middlewares :data do
119
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
120
+ end
121
+
122
+ middlewares :message do
123
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
124
+ end
125
+
126
+ middlewares :code do
127
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
128
+ end
129
+ end
130
+
131
+ class self::Step
132
+ concerns do
133
+ use ConvenientService::Plugins::Common::HasJSendResultDuckShortSyntax::Concern
134
+ end
135
+
136
+ middlewares :result do
137
+ use ConvenientService::Plugins::Step::CanHaveParentResult::Middleware
138
+ end
139
+ end
140
+
141
+ if Dependencies.rspec.loaded?
142
+ concerns do
143
+ insert_before 0, ConvenientService::Plugins::Service::CanHaveStubbedResults::Concern
144
+ end
145
+
146
+ middlewares :result do
147
+ insert_after \
148
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
149
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware
150
+
151
+ insert_before \
152
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware,
153
+ ConvenientService::Plugins::Service::CountsStubbedResultsInvocations::Middleware
154
+ end
155
+
156
+ middlewares :result, scope: :class do
157
+ insert_after \
158
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
159
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware
160
+
161
+ insert_before \
162
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware,
163
+ ConvenientService::Plugins::Service::CountsStubbedResultsInvocations::Middleware
164
+ end
165
+
166
+ class self::Result
167
+ concerns do
168
+ use ConvenientService::Plugins::Result::CanBeStubbedResult::Concern
169
+ use ConvenientService::Plugins::Result::HasStubbedResultInvocationsCounter::Concern
170
+ end
171
+
172
+ middlewares :initialize do
173
+ insert_before \
174
+ ConvenientService::Plugins::Result::HasJSendStatusAndAttributes::Middleware,
175
+ ConvenientService::Plugins::Result::HasStubbedResultInvocationsCounter::Middleware
176
+ end
177
+ end
178
+ end
179
+ end
180
+ # rubocop:enable Lint/ConstantDefinitionInBlock
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,238 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "standard/v1"
4
+ require_relative "standard/aliases"
5
+
6
+ module ConvenientService
7
+ module Service
8
+ module Configs
9
+ ##
10
+ # Default configuration for the user-defined services.
11
+ #
12
+ module Standard
13
+ include Support::Concern
14
+
15
+ ##
16
+ # @internal
17
+ # IMPORTANT: Order of plugins matters.
18
+ #
19
+ # NOTE: `class_exec` (that is used under the hood by `included`) defines `class Result` in the global namespace.
20
+ # That is why `class self::Result` is used.
21
+ # - https://stackoverflow.com/a/51965126/12201472
22
+ #
23
+ # rubocop:disable Lint/ConstantDefinitionInBlock
24
+ included do
25
+ include Configs::Minimal
26
+
27
+ concerns do
28
+ use ConvenientService::Plugins::Common::CachesConstructorArguments::Concern
29
+ use ConvenientService::Plugins::Common::CanBeCopied::Concern
30
+ use ConvenientService::Plugins::Service::CanRecalculateResult::Concern
31
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Concern
32
+ use ConvenientService::Plugins::Service::HasJSendResultStatusCheckShortSyntax::Concern
33
+
34
+ use ConvenientService::Plugins::Common::HasCallbacks::Concern
35
+ use ConvenientService::Plugins::Common::HasAroundCallbacks::Concern
36
+
37
+ use ConvenientService::Plugins::Service::CanHaveFallbacks::Concern
38
+ use ConvenientService::Plugins::Service::HasMermaidFlowchart::Concern
39
+ end
40
+
41
+ middlewares :initialize do
42
+ use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
43
+ use ConvenientService::Plugins::Common::CachesConstructorArguments::Middleware
44
+ end
45
+
46
+ middlewares :result do
47
+ insert_after \
48
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
49
+ ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
50
+
51
+ insert_before \
52
+ ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware,
53
+ ConvenientService::Plugins::Common::HasCallbacks::Middleware
54
+
55
+ insert_after \
56
+ ConvenientService::Plugins::Common::HasCallbacks::Middleware,
57
+ ConvenientService::Plugins::Common::HasAroundCallbacks::Middleware
58
+
59
+ ##
60
+ # TODO: Rewrite. This plugin does NOT do what it states. Probably I was NOT with a clear mind while writing it (facepalm).
61
+ #
62
+ # use ConvenientService::Plugins::Service::RaisesOnDoubleResult::Middleware
63
+
64
+ insert_before \
65
+ ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware,
66
+ ConvenientService::Plugins::Service::SetsParentToForeignResult::Middleware
67
+ end
68
+
69
+ ##
70
+ # @internal
71
+ # NOTE: Check `Minimal` docs to understand why `use ConvenientService::Plugins::Common::NormalizesEnv::Middleware` for `:fallback_failure_result` is used in `Standard`, not in `Minimal` config.
72
+ #
73
+ middlewares :fallback_failure_result do
74
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
75
+ use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
76
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
77
+
78
+ use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware
79
+ use ConvenientService::Plugins::Service::CanHaveFallbacks::Middleware.with(status: :failure)
80
+ end
81
+
82
+ ##
83
+ # @internal
84
+ # NOTE: Check `Minimal` docs to understand why `use ConvenientService::Plugins::Common::NormalizesEnv::Middleware` for `:fallback_error_result` is used in `Standard`, not in `Minimal` config.
85
+ #
86
+ middlewares :fallback_error_result do
87
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
88
+ use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware
89
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
90
+
91
+ use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware
92
+ use ConvenientService::Plugins::Service::CanHaveFallbacks::Middleware.with(status: :error)
93
+ end
94
+
95
+ middlewares :step do
96
+ use ConvenientService::Plugins::Common::HasCallbacks::Middleware
97
+ use ConvenientService::Plugins::Common::HasAroundCallbacks::Middleware
98
+ end
99
+
100
+ middlewares :success do
101
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Success::Middleware
102
+ end
103
+
104
+ middlewares :failure do
105
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Failure::Middleware
106
+ end
107
+
108
+ middlewares :error do
109
+ use ConvenientService::Plugins::Service::HasJSendResultShortSyntax::Error::Middleware
110
+ end
111
+
112
+ class self::Result
113
+ concerns do
114
+ use ConvenientService::Plugins::Common::HasJSendResultDuckShortSyntax::Concern
115
+ use ConvenientService::Plugins::Result::CanRecalculateResult::Concern
116
+
117
+ use ConvenientService::Plugins::Result::CanHaveStep::Concern
118
+ use ConvenientService::Plugins::Result::CanBeOwnResult::Concern
119
+ use ConvenientService::Plugins::Result::CanHaveFallbacks::Concern
120
+ use ConvenientService::Plugins::Result::CanHaveParentResult::Concern
121
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Concern
122
+ end
123
+
124
+ middlewares :success? do
125
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
126
+ end
127
+
128
+ middlewares :failure? do
129
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
130
+ end
131
+
132
+ middlewares :error? do
133
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
134
+ end
135
+
136
+ middlewares :not_success? do
137
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
138
+ end
139
+
140
+ middlewares :not_failure? do
141
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
142
+ end
143
+
144
+ middlewares :not_error? do
145
+ use ConvenientService::Plugins::Result::CanHaveCheckedStatus::Middleware
146
+ end
147
+
148
+ middlewares :data do
149
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
150
+ end
151
+
152
+ middlewares :message do
153
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
154
+ end
155
+
156
+ middlewares :code do
157
+ use ConvenientService::Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
158
+ end
159
+ end
160
+
161
+ class self::Step
162
+ concerns do
163
+ use ConvenientService::Plugins::Common::HasJSendResultDuckShortSyntax::Concern
164
+ use ConvenientService::Plugins::Step::CanHaveFallbacks::Concern
165
+ end
166
+
167
+ middlewares :result do
168
+ use ConvenientService::Plugins::Step::CanHaveFallbacks::Middleware.with(fallback_true_status: :failure)
169
+ use ConvenientService::Plugins::Step::CanHaveParentResult::Middleware
170
+ end
171
+
172
+ middlewares :service_fallback_failure_result do
173
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
174
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
175
+ use ConvenientService::Plugins::Step::RaisesOnNotResultReturnValue::Middleware
176
+ end
177
+
178
+ middlewares :fallback_failure_result do
179
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
180
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
181
+ end
182
+
183
+ middlewares :service_fallback_error_result do
184
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
185
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
186
+ use ConvenientService::Plugins::Step::RaisesOnNotResultReturnValue::Middleware
187
+ end
188
+
189
+ middlewares :fallback_error_result do
190
+ use ConvenientService::Plugins::Common::NormalizesEnv::Middleware
191
+ use ConvenientService::Plugins::Common::CachesReturnValue::Middleware
192
+ end
193
+ end
194
+
195
+ if Dependencies.rspec.loaded?
196
+ concerns do
197
+ insert_before 0, ConvenientService::Plugins::Service::CanHaveStubbedResults::Concern
198
+ end
199
+
200
+ middlewares :result do
201
+ insert_after \
202
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
203
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware
204
+
205
+ insert_before \
206
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware,
207
+ ConvenientService::Plugins::Service::CountsStubbedResultsInvocations::Middleware
208
+ end
209
+
210
+ middlewares :result, scope: :class do
211
+ insert_after \
212
+ ConvenientService::Plugins::Common::NormalizesEnv::Middleware,
213
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware
214
+
215
+ insert_before \
216
+ ConvenientService::Plugins::Service::CanHaveStubbedResults::Middleware,
217
+ ConvenientService::Plugins::Service::CountsStubbedResultsInvocations::Middleware
218
+ end
219
+
220
+ class self::Result
221
+ concerns do
222
+ use ConvenientService::Plugins::Result::CanBeStubbedResult::Concern
223
+ use ConvenientService::Plugins::Result::HasStubbedResultInvocationsCounter::Concern
224
+ end
225
+
226
+ middlewares :initialize do
227
+ insert_before \
228
+ ConvenientService::Plugins::Result::HasJSendStatusAndAttributes::Middleware,
229
+ ConvenientService::Plugins::Result::HasStubbedResultInvocationsCounter::Middleware
230
+ end
231
+ end
232
+ end
233
+ end
234
+ # rubocop:enable Lint/ConstantDefinitionInBlock
235
+ end
236
+ end
237
+ end
238
+ end