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.
- checksums.yaml +4 -4
- data/.github/workflows/project-build.yml +35 -11
- data/.rubocop.yml +101 -160
- data/AUDIT-functional-light-service.md +352 -0
- data/CHANGELOG.md +45 -0
- data/README.md +88 -2
- data/audit/bench.rb +99 -0
- data/audit/verify_findings.rb +172 -0
- data/functional-light-service.gemspec +15 -21
- data/lib/functional-light-service/action.rb +97 -101
- data/lib/functional-light-service/configuration.rb +26 -24
- data/lib/functional-light-service/context/key_verifier.rb +124 -118
- data/lib/functional-light-service/context.rb +63 -20
- data/lib/functional-light-service/deprecations.rb +26 -0
- data/lib/functional-light-service/errors.rb +8 -6
- data/lib/functional-light-service/functional/enum.rb +286 -250
- data/lib/functional-light-service/functional/maybe.rb +21 -15
- data/lib/functional-light-service/functional/monad.rb +77 -66
- data/lib/functional-light-service/functional/null.rb +88 -74
- data/lib/functional-light-service/functional/option.rb +100 -97
- data/lib/functional-light-service/functional/result.rb +129 -116
- data/lib/functional-light-service/functional/sequencer.rb +144 -0
- data/lib/functional-light-service/localization_adapter.rb +48 -47
- data/lib/functional-light-service/organizer/execute.rb +16 -14
- data/lib/functional-light-service/organizer/iterate.rb +30 -25
- data/lib/functional-light-service/organizer/reduce_if.rb +19 -17
- data/lib/functional-light-service/organizer/reduce_until.rb +22 -20
- data/lib/functional-light-service/organizer/scoped_reducable.rb +15 -13
- data/lib/functional-light-service/organizer/with_callback.rb +28 -26
- data/lib/functional-light-service/organizer/with_reducer.rb +81 -77
- data/lib/functional-light-service/organizer/with_reducer_factory.rb +20 -18
- data/lib/functional-light-service/organizer/with_reducer_log_decorator.rb +110 -108
- data/lib/functional-light-service/organizer.rb +114 -114
- data/lib/functional-light-service/testing/context_factory.rb +48 -42
- data/lib/functional-light-service/testing.rb +3 -1
- data/lib/functional-light-service/version.rb +5 -3
- data/lib/functional-light-service.rb +31 -28
- data/spec/acceptance/after_actions_spec.rb +87 -71
- data/spec/acceptance/before_actions_spec.rb +115 -98
- data/spec/acceptance/custom_log_from_organizer_spec.rb +61 -60
- data/spec/acceptance/deprecation_warnings_spec.rb +82 -0
- data/spec/acceptance/fail_spec.rb +52 -50
- data/spec/acceptance/message_localization_spec.rb +119 -118
- data/spec/acceptance/organizer/context_failure_and_skipping_spec.rb +68 -65
- data/spec/acceptance/organizer/reduce_if_spec.rb +89 -89
- data/spec/acceptance/organizer/with_callback_spec.rb +113 -110
- data/spec/acceptance/{not_having_call_method_warning_spec.rb → organizer_entry_point_spec.rb} +10 -7
- data/spec/acceptance/rollback_spec.rb +183 -132
- data/spec/action_expects_and_promises_spec.rb +97 -93
- data/spec/action_promised_keys_spec.rb +126 -122
- data/spec/context_spec.rb +289 -197
- data/spec/examples/controller_spec.rb +63 -63
- data/spec/examples/validate_address_spec.rb +38 -37
- data/spec/lib/deterministic/currify_spec.rb +90 -88
- data/spec/lib/deterministic/null_spec.rb +6 -1
- data/spec/lib/deterministic/option_spec.rb +140 -137
- data/spec/lib/deterministic/result/result_map_spec.rb +155 -154
- data/spec/lib/deterministic/result/result_shared.rb +3 -2
- data/spec/lib/deterministic/result_spec.rb +2 -2
- data/spec/lib/deterministic/sequencer_spec.rb +506 -0
- data/spec/lib/edge_cases_spec.rb +156 -0
- data/spec/lib/enum_spec.rb +1 -1
- data/spec/lib/native_pattern_matching_spec.rb +74 -0
- data/spec/organizer_spec.rb +115 -114
- data/spec/readme_spec.rb +45 -47
- data/spec/sample/calculates_order_tax_action_spec.rb +16 -16
- data/spec/sample/calculates_tax_spec.rb +1 -1
- data/spec/sample/looks_up_tax_percentage_action_spec.rb +55 -55
- data/spec/sample/tax/calculates_order_tax_action.rb +10 -9
- data/spec/sample/tax/looks_up_tax_percentage_action.rb +28 -27
- data/spec/sample/tax/provides_free_shipping_action.rb +11 -10
- data/spec/spec_helper.rb +6 -0
- data/spec/test_doubles.rb +628 -599
- data/spec/testing/context_factory_spec.rb +21 -0
- metadata +48 -162
- data/lib/functional-light-service/organizer/verify_call_method_exists.rb +0 -29
- 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:
|
|
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:
|
|
53
|
+
name: logger
|
|
54
54
|
requirement: !ruby/object:Gem::Requirement
|
|
55
55
|
requirements:
|
|
56
56
|
- - "~>"
|
|
57
57
|
- !ruby/object:Gem::Version
|
|
58
|
-
version:
|
|
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:
|
|
69
|
-
- - ">="
|
|
70
|
-
- !ruby/object:Gem::Version
|
|
71
|
-
version: 13.0.6
|
|
65
|
+
version: '1.5'
|
|
72
66
|
- !ruby/object:Gem::Dependency
|
|
73
|
-
name:
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
177
|
+
version: '0.50'
|
|
238
178
|
- !ruby/object:Gem::Dependency
|
|
239
|
-
name:
|
|
179
|
+
name: benchmark-ips
|
|
240
180
|
requirement: !ruby/object:Gem::Requirement
|
|
241
181
|
requirements:
|
|
242
182
|
- - "~>"
|
|
243
183
|
- !ruby/object:Gem::Version
|
|
244
|
-
version:
|
|
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:
|
|
252
|
-
description:
|
|
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:
|
|
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:
|
|
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
|