functional-light-service 0.5.4 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/project-build.yml +35 -11
  3. data/.rubocop.yml +101 -160
  4. data/AUDIT-functional-light-service.md +352 -0
  5. data/CHANGELOG.md +38 -0
  6. data/README.md +54 -2
  7. data/audit/bench.rb +99 -0
  8. data/audit/verify_findings.rb +172 -0
  9. data/functional-light-service.gemspec +15 -21
  10. data/lib/functional-light-service/action.rb +97 -101
  11. data/lib/functional-light-service/configuration.rb +26 -24
  12. data/lib/functional-light-service/context/key_verifier.rb +124 -118
  13. data/lib/functional-light-service/context.rb +63 -20
  14. data/lib/functional-light-service/deprecations.rb +26 -0
  15. data/lib/functional-light-service/errors.rb +8 -6
  16. data/lib/functional-light-service/functional/enum.rb +286 -250
  17. data/lib/functional-light-service/functional/maybe.rb +21 -15
  18. data/lib/functional-light-service/functional/monad.rb +77 -66
  19. data/lib/functional-light-service/functional/null.rb +88 -74
  20. data/lib/functional-light-service/functional/option.rb +100 -97
  21. data/lib/functional-light-service/functional/result.rb +129 -116
  22. data/lib/functional-light-service/localization_adapter.rb +48 -47
  23. data/lib/functional-light-service/organizer/execute.rb +16 -14
  24. data/lib/functional-light-service/organizer/iterate.rb +30 -25
  25. data/lib/functional-light-service/organizer/reduce_if.rb +19 -17
  26. data/lib/functional-light-service/organizer/reduce_until.rb +22 -20
  27. data/lib/functional-light-service/organizer/scoped_reducable.rb +15 -13
  28. data/lib/functional-light-service/organizer/with_callback.rb +28 -26
  29. data/lib/functional-light-service/organizer/with_reducer.rb +81 -77
  30. data/lib/functional-light-service/organizer/with_reducer_factory.rb +20 -18
  31. data/lib/functional-light-service/organizer/with_reducer_log_decorator.rb +110 -108
  32. data/lib/functional-light-service/organizer.rb +114 -114
  33. data/lib/functional-light-service/testing/context_factory.rb +48 -42
  34. data/lib/functional-light-service/testing.rb +3 -1
  35. data/lib/functional-light-service/version.rb +5 -3
  36. data/lib/functional-light-service.rb +30 -28
  37. data/spec/acceptance/after_actions_spec.rb +87 -71
  38. data/spec/acceptance/before_actions_spec.rb +115 -98
  39. data/spec/acceptance/custom_log_from_organizer_spec.rb +61 -60
  40. data/spec/acceptance/deprecation_warnings_spec.rb +82 -0
  41. data/spec/acceptance/fail_spec.rb +52 -50
  42. data/spec/acceptance/message_localization_spec.rb +119 -118
  43. data/spec/acceptance/organizer/context_failure_and_skipping_spec.rb +68 -65
  44. data/spec/acceptance/organizer/reduce_if_spec.rb +89 -89
  45. data/spec/acceptance/organizer/with_callback_spec.rb +113 -110
  46. data/spec/acceptance/{not_having_call_method_warning_spec.rb → organizer_entry_point_spec.rb} +10 -7
  47. data/spec/acceptance/rollback_spec.rb +183 -132
  48. data/spec/action_expects_and_promises_spec.rb +97 -93
  49. data/spec/action_promised_keys_spec.rb +126 -122
  50. data/spec/context_spec.rb +289 -197
  51. data/spec/examples/controller_spec.rb +63 -63
  52. data/spec/examples/validate_address_spec.rb +38 -37
  53. data/spec/lib/deterministic/currify_spec.rb +90 -88
  54. data/spec/lib/deterministic/null_spec.rb +6 -1
  55. data/spec/lib/deterministic/option_spec.rb +140 -137
  56. data/spec/lib/deterministic/result/result_map_spec.rb +155 -154
  57. data/spec/lib/deterministic/result/result_shared.rb +3 -2
  58. data/spec/lib/deterministic/result_spec.rb +2 -2
  59. data/spec/lib/edge_cases_spec.rb +156 -0
  60. data/spec/lib/enum_spec.rb +1 -1
  61. data/spec/lib/native_pattern_matching_spec.rb +74 -0
  62. data/spec/organizer_spec.rb +115 -114
  63. data/spec/readme_spec.rb +45 -47
  64. data/spec/sample/calculates_order_tax_action_spec.rb +16 -16
  65. data/spec/sample/calculates_tax_spec.rb +1 -1
  66. data/spec/sample/looks_up_tax_percentage_action_spec.rb +55 -55
  67. data/spec/sample/tax/calculates_order_tax_action.rb +10 -9
  68. data/spec/sample/tax/looks_up_tax_percentage_action.rb +28 -27
  69. data/spec/sample/tax/provides_free_shipping_action.rb +11 -10
  70. data/spec/spec_helper.rb +6 -0
  71. data/spec/test_doubles.rb +628 -599
  72. data/spec/testing/context_factory_spec.rb +21 -0
  73. metadata +45 -161
  74. data/lib/functional-light-service/organizer/verify_call_method_exists.rb +0 -29
  75. data/spec/acceptance/include_warning_spec.rb +0 -29
@@ -4,6 +4,10 @@ require "test_doubles"
4
4
  describe "ContextFactory - used with AdditionOrganizer" do
5
5
  let(:organizer) { TestDoubles::AdditionOrganizer }
6
6
 
7
+ after do
8
+ TestDoubles::AdditionOrganizer.before_actions = nil
9
+ end
10
+
7
11
  context "when called with the first action" do
8
12
  it "does not alter the context" do
9
13
  ctx = FunctionalLightService::Testing::ContextFactory
@@ -52,4 +56,21 @@ describe "ContextFactory - used with AdditionOrganizer" do
52
56
  expect(context[:_before_actions].length).to eq(1)
53
57
  end
54
58
  end
59
+
60
+ context "when used repeatedly" do
61
+ it "does not leave its temporary hook on the organizer class" do
62
+ 2.times do
63
+ FunctionalLightService::Testing::ContextFactory
64
+ .make_from(organizer)
65
+ .for(TestDoubles::AddsTwoAction)
66
+ .with(1)
67
+ end
68
+
69
+ hooks = organizer.instance_variable_get(:@before_actions)
70
+ expect(hooks.nil? || hooks.empty?).to be(true)
71
+
72
+ # e l'organizer continua a funzionare normalmente
73
+ expect(organizer.call(1).fetch(:number)).to eq(7)
74
+ end
75
+ end
55
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: functional-light-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boscolo Michele
@@ -13,22 +13,22 @@ dependencies:
13
13
  name: dry-inflector
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: '0.2'
19
16
  - - ">="
20
17
  - !ruby/object:Gem::Version
21
18
  version: 0.2.1
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '2'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - "~>"
27
- - !ruby/object:Gem::Version
28
- version: '0.2'
29
26
  - - ">="
30
27
  - !ruby/object:Gem::Version
31
28
  version: 0.2.1
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '2'
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: i18n
34
34
  requirement: !ruby/object:Gem::Requirement
@@ -50,207 +50,149 @@ dependencies:
50
50
  - !ruby/object:Gem::Version
51
51
  version: 1.8.11
52
52
  - !ruby/object:Gem::Dependency
53
- name: rake
53
+ name: logger
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
56
  - - "~>"
57
57
  - !ruby/object:Gem::Version
58
- version: 13.0.6
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 13.0.6
62
- type: :development
58
+ version: '1.5'
59
+ type: :runtime
63
60
  prerelease: false
64
61
  version_requirements: !ruby/object:Gem::Requirement
65
62
  requirements:
66
63
  - - "~>"
67
64
  - !ruby/object:Gem::Version
68
- version: 13.0.6
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: 13.0.6
65
+ version: '1.5'
72
66
  - !ruby/object:Gem::Dependency
73
- name: i18n
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '1.8'
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.8.11
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.8'
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: 1.8.11
92
- - !ruby/object:Gem::Dependency
93
- name: dry-inflector
67
+ name: rake
94
68
  requirement: !ruby/object:Gem::Requirement
95
69
  requirements:
96
70
  - - "~>"
97
71
  - !ruby/object:Gem::Version
98
- version: '0.2'
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 0.2.1
72
+ version: '13.0'
102
73
  type: :development
103
74
  prerelease: false
104
75
  version_requirements: !ruby/object:Gem::Requirement
105
76
  requirements:
106
77
  - - "~>"
107
78
  - !ruby/object:Gem::Version
108
- version: '0.2'
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: 0.2.1
79
+ version: '13.0'
112
80
  - !ruby/object:Gem::Dependency
113
81
  name: rspec
114
82
  requirement: !ruby/object:Gem::Requirement
115
83
  requirements:
116
84
  - - "~>"
117
85
  - !ruby/object:Gem::Version
118
- version: 3.10.0
86
+ version: '3.13'
119
87
  type: :development
120
88
  prerelease: false
121
89
  version_requirements: !ruby/object:Gem::Requirement
122
90
  requirements:
123
91
  - - "~>"
124
92
  - !ruby/object:Gem::Version
125
- version: 3.10.0
126
- - !ruby/object:Gem::Dependency
127
- name: rspec-mocks
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - '='
131
- - !ruby/object:Gem::Version
132
- version: 3.10.2
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - '='
138
- - !ruby/object:Gem::Version
139
- version: 3.10.2
93
+ version: '3.13'
140
94
  - !ruby/object:Gem::Dependency
141
95
  name: simplecov
142
96
  requirement: !ruby/object:Gem::Requirement
143
97
  requirements:
144
98
  - - "~>"
145
99
  - !ruby/object:Gem::Version
146
- version: 0.21.2
100
+ version: '0.22'
147
101
  type: :development
148
102
  prerelease: false
149
103
  version_requirements: !ruby/object:Gem::Requirement
150
104
  requirements:
151
105
  - - "~>"
152
106
  - !ruby/object:Gem::Version
153
- version: 0.21.2
107
+ version: '0.22'
154
108
  - !ruby/object:Gem::Dependency
155
109
  name: simplecov-cobertura
156
110
  requirement: !ruby/object:Gem::Requirement
157
111
  requirements:
158
112
  - - "~>"
159
113
  - !ruby/object:Gem::Version
160
- version: 2.1.0
114
+ version: '3.0'
161
115
  type: :development
162
116
  prerelease: false
163
117
  version_requirements: !ruby/object:Gem::Requirement
164
118
  requirements:
165
119
  - - "~>"
166
120
  - !ruby/object:Gem::Version
167
- version: 2.1.0
168
- - !ruby/object:Gem::Dependency
169
- name: rexml
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - "<"
173
- - !ruby/object:Gem::Version
174
- version: '3.3'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "<"
180
- - !ruby/object:Gem::Version
181
- version: '3.3'
121
+ version: '3.0'
182
122
  - !ruby/object:Gem::Dependency
183
123
  name: rubocop
184
124
  requirement: !ruby/object:Gem::Requirement
185
125
  requirements:
186
126
  - - "~>"
187
127
  - !ruby/object:Gem::Version
188
- version: 1.25.0
128
+ version: '1.75'
189
129
  type: :development
190
130
  prerelease: false
191
131
  version_requirements: !ruby/object:Gem::Requirement
192
132
  requirements:
193
133
  - - "~>"
194
134
  - !ruby/object:Gem::Version
195
- version: 1.25.0
135
+ version: '1.75'
196
136
  - !ruby/object:Gem::Dependency
197
137
  name: rubocop-performance
198
138
  requirement: !ruby/object:Gem::Requirement
199
139
  requirements:
200
140
  - - "~>"
201
141
  - !ruby/object:Gem::Version
202
- version: 1.13.2
142
+ version: '1.20'
203
143
  type: :development
204
144
  prerelease: false
205
145
  version_requirements: !ruby/object:Gem::Requirement
206
146
  requirements:
207
147
  - - "~>"
208
148
  - !ruby/object:Gem::Version
209
- version: 1.13.2
149
+ version: '1.20'
210
150
  - !ruby/object:Gem::Dependency
211
151
  name: pry
212
152
  requirement: !ruby/object:Gem::Requirement
213
153
  requirements:
214
154
  - - "~>"
215
155
  - !ruby/object:Gem::Version
216
- version: 0.14.1
156
+ version: '0.15'
217
157
  type: :development
218
158
  prerelease: false
219
159
  version_requirements: !ruby/object:Gem::Requirement
220
160
  requirements:
221
161
  - - "~>"
222
162
  - !ruby/object:Gem::Version
223
- version: 0.14.1
163
+ version: '0.15'
224
164
  - !ruby/object:Gem::Dependency
225
165
  name: solargraph
226
166
  requirement: !ruby/object:Gem::Requirement
227
167
  requirements:
228
168
  - - "~>"
229
169
  - !ruby/object:Gem::Version
230
- version: 0.44.2
170
+ version: '0.50'
231
171
  type: :development
232
172
  prerelease: false
233
173
  version_requirements: !ruby/object:Gem::Requirement
234
174
  requirements:
235
175
  - - "~>"
236
176
  - !ruby/object:Gem::Version
237
- version: 0.44.2
177
+ version: '0.50'
238
178
  - !ruby/object:Gem::Dependency
239
- name: nokogiri
179
+ name: benchmark-ips
240
180
  requirement: !ruby/object:Gem::Requirement
241
181
  requirements:
242
182
  - - "~>"
243
183
  - !ruby/object:Gem::Version
244
- version: 1.12.5
184
+ version: '2.13'
245
185
  type: :development
246
186
  prerelease: false
247
187
  version_requirements: !ruby/object:Gem::Requirement
248
188
  requirements:
249
189
  - - "~>"
250
190
  - !ruby/object:Gem::Version
251
- version: 1.12.5
252
- description: A service skeleton with an emphasis on simplicity with a pinch a functional
253
- programming
191
+ version: '2.13'
192
+ description: 'FunctionalLightService combines the Organizer/Action/Context pattern
193
+ of LightService with functional programming constructs (Result/Option monads, pattern
194
+ matching) inspired by Deterministic: complex workflows are organized into small
195
+ single-purpose actions with functional error handling.'
254
196
  email:
255
197
  - miboscol@gmail.com
256
198
  executables: []
@@ -262,6 +204,7 @@ files:
262
204
  - ".rspec"
263
205
  - ".rubocop.yml"
264
206
  - ".solargraph.yml"
207
+ - AUDIT-functional-light-service.md
265
208
  - Appraisals
266
209
  - CHANGELOG.md
267
210
  - CODE_OF_CONDUCT.md
@@ -270,6 +213,8 @@ files:
270
213
  - README.md
271
214
  - Rakefile
272
215
  - VERSION
216
+ - audit/bench.rb
217
+ - audit/verify_findings.rb
273
218
  - functional-light-service.gemspec
274
219
  - gemfiles/dry_inflector_0_2_1.gemfile
275
220
  - gemfiles/i18n_1_8_11.gemfile
@@ -278,6 +223,7 @@ files:
278
223
  - lib/functional-light-service/configuration.rb
279
224
  - lib/functional-light-service/context.rb
280
225
  - lib/functional-light-service/context/key_verifier.rb
226
+ - lib/functional-light-service/deprecations.rb
281
227
  - lib/functional-light-service/errors.rb
282
228
  - lib/functional-light-service/functional/enum.rb
283
229
  - lib/functional-light-service/functional/maybe.rb
@@ -292,7 +238,6 @@ files:
292
238
  - lib/functional-light-service/organizer/reduce_if.rb
293
239
  - lib/functional-light-service/organizer/reduce_until.rb
294
240
  - lib/functional-light-service/organizer/scoped_reducable.rb
295
- - lib/functional-light-service/organizer/verify_call_method_exists.rb
296
241
  - lib/functional-light-service/organizer/with_callback.rb
297
242
  - lib/functional-light-service/organizer/with_reducer.rb
298
243
  - lib/functional-light-service/organizer/with_reducer_factory.rb
@@ -309,11 +254,10 @@ files:
309
254
  - spec/acceptance/around_each_spec.rb
310
255
  - spec/acceptance/before_actions_spec.rb
311
256
  - spec/acceptance/custom_log_from_organizer_spec.rb
257
+ - spec/acceptance/deprecation_warnings_spec.rb
312
258
  - spec/acceptance/fail_spec.rb
313
- - spec/acceptance/include_warning_spec.rb
314
259
  - spec/acceptance/log_from_organizer_spec.rb
315
260
  - spec/acceptance/message_localization_spec.rb
316
- - spec/acceptance/not_having_call_method_warning_spec.rb
317
261
  - spec/acceptance/organizer/add_aliases_spec.rb
318
262
  - spec/acceptance/organizer/add_to_context_spec.rb
319
263
  - spec/acceptance/organizer/around_each_with_reduce_if_spec.rb
@@ -323,6 +267,7 @@ files:
323
267
  - spec/acceptance/organizer/reduce_if_spec.rb
324
268
  - spec/acceptance/organizer/reduce_until_spec.rb
325
269
  - spec/acceptance/organizer/with_callback_spec.rb
270
+ - spec/acceptance/organizer_entry_point_spec.rb
326
271
  - spec/acceptance/rollback_spec.rb
327
272
  - spec/acceptance/testing/context_factory_spec.rb
328
273
  - spec/action_expected_keys_spec.rb
@@ -345,7 +290,9 @@ files:
345
290
  - spec/lib/deterministic/result/result_shared.rb
346
291
  - spec/lib/deterministic/result/success_spec.rb
347
292
  - spec/lib/deterministic/result_spec.rb
293
+ - spec/lib/edge_cases_spec.rb
348
294
  - spec/lib/enum_spec.rb
295
+ - spec/lib/native_pattern_matching_spec.rb
349
296
  - spec/localization_adapter_spec.rb
350
297
  - spec/organizer/with_reducer_spec.rb
351
298
  - spec/organizer_key_aliases_spec.rb
@@ -378,7 +325,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
378
325
  requirements:
379
326
  - - ">="
380
327
  - !ruby/object:Gem::Version
381
- version: 2.6.0
328
+ version: 3.1.0
382
329
  required_rubygems_version: !ruby/object:Gem::Requirement
383
330
  requirements:
384
331
  - - ">="
@@ -389,67 +336,4 @@ rubygems_version: 3.6.9
389
336
  specification_version: 4
390
337
  summary: A service skeleton with an emphasis on simplicity with a pinch a functional
391
338
  programming
392
- test_files:
393
- - spec/acceptance/add_numbers_spec.rb
394
- - spec/acceptance/after_actions_spec.rb
395
- - spec/acceptance/around_each_spec.rb
396
- - spec/acceptance/before_actions_spec.rb
397
- - spec/acceptance/custom_log_from_organizer_spec.rb
398
- - spec/acceptance/fail_spec.rb
399
- - spec/acceptance/include_warning_spec.rb
400
- - spec/acceptance/log_from_organizer_spec.rb
401
- - spec/acceptance/message_localization_spec.rb
402
- - spec/acceptance/not_having_call_method_warning_spec.rb
403
- - spec/acceptance/organizer/add_aliases_spec.rb
404
- - spec/acceptance/organizer/add_to_context_spec.rb
405
- - spec/acceptance/organizer/around_each_with_reduce_if_spec.rb
406
- - spec/acceptance/organizer/context_failure_and_skipping_spec.rb
407
- - spec/acceptance/organizer/execute_spec.rb
408
- - spec/acceptance/organizer/iterate_spec.rb
409
- - spec/acceptance/organizer/reduce_if_spec.rb
410
- - spec/acceptance/organizer/reduce_until_spec.rb
411
- - spec/acceptance/organizer/with_callback_spec.rb
412
- - spec/acceptance/rollback_spec.rb
413
- - spec/acceptance/testing/context_factory_spec.rb
414
- - spec/action_expected_keys_spec.rb
415
- - spec/action_expects_and_promises_spec.rb
416
- - spec/action_promised_keys_spec.rb
417
- - spec/action_spec.rb
418
- - spec/context/inspect_spec.rb
419
- - spec/context_spec.rb
420
- - spec/examples/amount_spec.rb
421
- - spec/examples/controller_spec.rb
422
- - spec/examples/validate_address_spec.rb
423
- - spec/lib/deterministic/class_mixin_spec.rb
424
- - spec/lib/deterministic/currify_spec.rb
425
- - spec/lib/deterministic/monad_axioms.rb
426
- - spec/lib/deterministic/monad_spec.rb
427
- - spec/lib/deterministic/null_spec.rb
428
- - spec/lib/deterministic/option_spec.rb
429
- - spec/lib/deterministic/result/failure_spec.rb
430
- - spec/lib/deterministic/result/result_map_spec.rb
431
- - spec/lib/deterministic/result/result_shared.rb
432
- - spec/lib/deterministic/result/success_spec.rb
433
- - spec/lib/deterministic/result_spec.rb
434
- - spec/lib/enum_spec.rb
435
- - spec/localization_adapter_spec.rb
436
- - spec/organizer/with_reducer_spec.rb
437
- - spec/organizer_key_aliases_spec.rb
438
- - spec/organizer_spec.rb
439
- - spec/readme_spec.rb
440
- - spec/sample/calculates_order_tax_action_spec.rb
441
- - spec/sample/calculates_tax_spec.rb
442
- - spec/sample/looks_up_tax_percentage_action_spec.rb
443
- - spec/sample/provides_free_shipping_action_spec.rb
444
- - spec/sample/tax/calculates_order_tax_action.rb
445
- - spec/sample/tax/calculates_tax.rb
446
- - spec/sample/tax/looks_up_tax_percentage_action.rb
447
- - spec/sample/tax/provides_free_shipping_action.rb
448
- - spec/spec_helper.rb
449
- - spec/support.rb
450
- - spec/test_doubles.rb
451
- - spec/testing/context_factory/iterate_spec.rb
452
- - spec/testing/context_factory/reduce_if_spec.rb
453
- - spec/testing/context_factory/reduce_until_spec.rb
454
- - spec/testing/context_factory/with_callback_spec.rb
455
- - spec/testing/context_factory_spec.rb
339
+ test_files: []
@@ -1,29 +0,0 @@
1
- module FunctionalLightService
2
- module Organizer
3
- # We need to make sure existing users will
4
- # use `call` method name going forward.
5
- # This should be removed eventually.
6
- class VerifyCallMethodExists
7
- def self.run(klass, first_caller = '')
8
- invoker_method = caller_method(first_caller)
9
- return if invoker_method == 'call'
10
-
11
- call_method_exists = klass.methods.include?(:call)
12
- return if call_method_exists
13
-
14
- warning_msg = "DEPRECATION WARNING:" \
15
- "The <#{klass.name}> class is an organizer, " \
16
- "its entry method (the one that calls with & reduce) " \
17
- "should be named `call`. " \
18
- "Please use #{klass}.call going forward."
19
- print warning_msg
20
- end
21
-
22
- def self.caller_method(first_caller)
23
- return nil unless first_caller =~ /`(.*)'/
24
-
25
- Regexp.last_match[1]
26
- end
27
- end
28
- end
29
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Including is discouraged" do
4
- context "when including FunctionalLightService::Organizer" do
5
- it "gives warning" do
6
- expected_msg = "DEPRECATION WARNING:\n" \
7
- "Including FunctionalLightService::Organizer is deprecated\n" \
8
- "Please use `extend FunctionalLightService::Organizer` instead"
9
- expect do
10
- class OrganizerIncludingLS
11
- include FunctionalLightService::Organizer
12
- end
13
- end.to output(expected_msg).to_stdout
14
- end
15
- end
16
-
17
- context "when including FunctionalLightService::Action" do
18
- it "gives warning" do
19
- expected_msg = "DEPRECATION WARNING:\n" \
20
- "Including FunctionalLightService::Action is deprecated\n" \
21
- "Please use `extend FunctionalLightService::Action` instead"
22
- expect do
23
- class ActionIncludingLS
24
- include FunctionalLightService::Action
25
- end
26
- end.to output(expected_msg).to_stdout
27
- end
28
- end
29
- end