functional-light-service 0.5.4 → 6.1.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 (77) 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 +45 -0
  6. data/README.md +88 -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/functional/sequencer.rb +144 -0
  23. data/lib/functional-light-service/localization_adapter.rb +48 -47
  24. data/lib/functional-light-service/organizer/execute.rb +16 -14
  25. data/lib/functional-light-service/organizer/iterate.rb +30 -25
  26. data/lib/functional-light-service/organizer/reduce_if.rb +19 -17
  27. data/lib/functional-light-service/organizer/reduce_until.rb +22 -20
  28. data/lib/functional-light-service/organizer/scoped_reducable.rb +15 -13
  29. data/lib/functional-light-service/organizer/with_callback.rb +28 -26
  30. data/lib/functional-light-service/organizer/with_reducer.rb +81 -77
  31. data/lib/functional-light-service/organizer/with_reducer_factory.rb +20 -18
  32. data/lib/functional-light-service/organizer/with_reducer_log_decorator.rb +110 -108
  33. data/lib/functional-light-service/organizer.rb +114 -114
  34. data/lib/functional-light-service/testing/context_factory.rb +48 -42
  35. data/lib/functional-light-service/testing.rb +3 -1
  36. data/lib/functional-light-service/version.rb +5 -3
  37. data/lib/functional-light-service.rb +31 -28
  38. data/spec/acceptance/after_actions_spec.rb +87 -71
  39. data/spec/acceptance/before_actions_spec.rb +115 -98
  40. data/spec/acceptance/custom_log_from_organizer_spec.rb +61 -60
  41. data/spec/acceptance/deprecation_warnings_spec.rb +82 -0
  42. data/spec/acceptance/fail_spec.rb +52 -50
  43. data/spec/acceptance/message_localization_spec.rb +119 -118
  44. data/spec/acceptance/organizer/context_failure_and_skipping_spec.rb +68 -65
  45. data/spec/acceptance/organizer/reduce_if_spec.rb +89 -89
  46. data/spec/acceptance/organizer/with_callback_spec.rb +113 -110
  47. data/spec/acceptance/{not_having_call_method_warning_spec.rb → organizer_entry_point_spec.rb} +10 -7
  48. data/spec/acceptance/rollback_spec.rb +183 -132
  49. data/spec/action_expects_and_promises_spec.rb +97 -93
  50. data/spec/action_promised_keys_spec.rb +126 -122
  51. data/spec/context_spec.rb +289 -197
  52. data/spec/examples/controller_spec.rb +63 -63
  53. data/spec/examples/validate_address_spec.rb +38 -37
  54. data/spec/lib/deterministic/currify_spec.rb +90 -88
  55. data/spec/lib/deterministic/null_spec.rb +6 -1
  56. data/spec/lib/deterministic/option_spec.rb +140 -137
  57. data/spec/lib/deterministic/result/result_map_spec.rb +155 -154
  58. data/spec/lib/deterministic/result/result_shared.rb +3 -2
  59. data/spec/lib/deterministic/result_spec.rb +2 -2
  60. data/spec/lib/deterministic/sequencer_spec.rb +506 -0
  61. data/spec/lib/edge_cases_spec.rb +156 -0
  62. data/spec/lib/enum_spec.rb +1 -1
  63. data/spec/lib/native_pattern_matching_spec.rb +74 -0
  64. data/spec/organizer_spec.rb +115 -114
  65. data/spec/readme_spec.rb +45 -47
  66. data/spec/sample/calculates_order_tax_action_spec.rb +16 -16
  67. data/spec/sample/calculates_tax_spec.rb +1 -1
  68. data/spec/sample/looks_up_tax_percentage_action_spec.rb +55 -55
  69. data/spec/sample/tax/calculates_order_tax_action.rb +10 -9
  70. data/spec/sample/tax/looks_up_tax_percentage_action.rb +28 -27
  71. data/spec/sample/tax/provides_free_shipping_action.rb +11 -10
  72. data/spec/spec_helper.rb +6 -0
  73. data/spec/test_doubles.rb +628 -599
  74. data/spec/testing/context_factory_spec.rb +21 -0
  75. metadata +48 -162
  76. data/lib/functional-light-service/organizer/verify_call_method_exists.rb +0 -29
  77. 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.1.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
@@ -285,6 +231,7 @@ files:
285
231
  - lib/functional-light-service/functional/null.rb
286
232
  - lib/functional-light-service/functional/option.rb
287
233
  - lib/functional-light-service/functional/result.rb
234
+ - lib/functional-light-service/functional/sequencer.rb
288
235
  - lib/functional-light-service/localization_adapter.rb
289
236
  - lib/functional-light-service/organizer.rb
290
237
  - lib/functional-light-service/organizer/execute.rb
@@ -292,7 +239,6 @@ files:
292
239
  - lib/functional-light-service/organizer/reduce_if.rb
293
240
  - lib/functional-light-service/organizer/reduce_until.rb
294
241
  - lib/functional-light-service/organizer/scoped_reducable.rb
295
- - lib/functional-light-service/organizer/verify_call_method_exists.rb
296
242
  - lib/functional-light-service/organizer/with_callback.rb
297
243
  - lib/functional-light-service/organizer/with_reducer.rb
298
244
  - lib/functional-light-service/organizer/with_reducer_factory.rb
@@ -309,11 +255,10 @@ files:
309
255
  - spec/acceptance/around_each_spec.rb
310
256
  - spec/acceptance/before_actions_spec.rb
311
257
  - spec/acceptance/custom_log_from_organizer_spec.rb
258
+ - spec/acceptance/deprecation_warnings_spec.rb
312
259
  - spec/acceptance/fail_spec.rb
313
- - spec/acceptance/include_warning_spec.rb
314
260
  - spec/acceptance/log_from_organizer_spec.rb
315
261
  - spec/acceptance/message_localization_spec.rb
316
- - spec/acceptance/not_having_call_method_warning_spec.rb
317
262
  - spec/acceptance/organizer/add_aliases_spec.rb
318
263
  - spec/acceptance/organizer/add_to_context_spec.rb
319
264
  - spec/acceptance/organizer/around_each_with_reduce_if_spec.rb
@@ -323,6 +268,7 @@ files:
323
268
  - spec/acceptance/organizer/reduce_if_spec.rb
324
269
  - spec/acceptance/organizer/reduce_until_spec.rb
325
270
  - spec/acceptance/organizer/with_callback_spec.rb
271
+ - spec/acceptance/organizer_entry_point_spec.rb
326
272
  - spec/acceptance/rollback_spec.rb
327
273
  - spec/acceptance/testing/context_factory_spec.rb
328
274
  - spec/action_expected_keys_spec.rb
@@ -345,7 +291,10 @@ files:
345
291
  - spec/lib/deterministic/result/result_shared.rb
346
292
  - spec/lib/deterministic/result/success_spec.rb
347
293
  - spec/lib/deterministic/result_spec.rb
294
+ - spec/lib/deterministic/sequencer_spec.rb
295
+ - spec/lib/edge_cases_spec.rb
348
296
  - spec/lib/enum_spec.rb
297
+ - spec/lib/native_pattern_matching_spec.rb
349
298
  - spec/localization_adapter_spec.rb
350
299
  - spec/organizer/with_reducer_spec.rb
351
300
  - spec/organizer_key_aliases_spec.rb
@@ -378,78 +327,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
378
327
  requirements:
379
328
  - - ">="
380
329
  - !ruby/object:Gem::Version
381
- version: 2.6.0
330
+ version: 3.1.0
382
331
  required_rubygems_version: !ruby/object:Gem::Requirement
383
332
  requirements:
384
333
  - - ">="
385
334
  - !ruby/object:Gem::Version
386
335
  version: '0'
387
336
  requirements: []
388
- rubygems_version: 3.6.9
337
+ rubygems_version: 4.0.3
389
338
  specification_version: 4
390
339
  summary: A service skeleton with an emphasis on simplicity with a pinch a functional
391
340
  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
341
+ 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