functional-light-service 0.3.4 → 0.4.4
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 +39 -0
- data/.rubocop.yml +103 -15
- data/.solargraph.yml +11 -0
- data/.travis.yml +5 -5
- data/Appraisals +2 -2
- data/CHANGELOG.md +48 -0
- data/Gemfile +2 -2
- data/README.md +3 -1
- data/VERSION +1 -1
- data/functional-light-service.gemspec +14 -8
- data/gemfiles/dry_inflector_0_2_1.gemfile +5 -0
- data/gemfiles/i18n_1_8_11.gemfile +5 -0
- data/lib/functional-light-service/context/key_verifier.rb +2 -2
- data/lib/functional-light-service/context.rb +152 -154
- data/lib/functional-light-service/functional/enum.rb +2 -6
- data/lib/functional-light-service/functional/maybe.rb +1 -0
- data/lib/functional-light-service/functional/null.rb +1 -1
- data/lib/functional-light-service/functional/option.rb +0 -2
- data/lib/functional-light-service/functional/result.rb +2 -2
- data/lib/functional-light-service/organizer/with_reducer_log_decorator.rb +2 -2
- data/lib/functional-light-service/testing/context_factory.rb +2 -0
- data/lib/functional-light-service/version.rb +1 -1
- data/spec/acceptance/fail_spec.rb +42 -16
- data/spec/acceptance/organizer/reduce_if_spec.rb +32 -0
- data/spec/context/inspect_spec.rb +6 -21
- data/spec/context_spec.rb +1 -1
- data/spec/lib/deterministic/monad_axioms.rb +2 -0
- data/spec/lib/deterministic/monad_spec.rb +2 -0
- data/spec/lib/deterministic/null_spec.rb +2 -0
- data/spec/lib/enum_spec.rb +3 -1
- data/spec/sample/looks_up_tax_percentage_action_spec.rb +3 -1
- data/spec/spec_helper.rb +9 -8
- data/spec/test_doubles.rb +21 -9
- metadata +107 -25
- data/gemfiles/dry_inflector_0_2.gemfile +0 -8
- data/gemfiles/i18n_1_8.gemfile +0 -8
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
2
2
|
$LOAD_PATH << File.join(File.dirname(__FILE__))
|
3
3
|
|
4
|
-
|
5
|
-
require 'simplecov'
|
4
|
+
require 'simplecov'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
SimpleCov.minimum_coverage_by_file 90
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter 'vendor/'
|
8
|
+
add_filter %r{^/spec/}
|
13
9
|
end
|
14
10
|
|
11
|
+
SimpleCov.minimum_coverage_by_file 90
|
12
|
+
|
13
|
+
require 'simplecov-cobertura'
|
14
|
+
SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
|
15
|
+
|
15
16
|
require 'functional-light-service'
|
16
17
|
require 'functional-light-service/testing'
|
17
18
|
require "functional-light-service/functional/null"
|
data/spec/test_doubles.rb
CHANGED
@@ -45,6 +45,7 @@ module TestDoubles
|
|
45
45
|
|
46
46
|
class TestLogger
|
47
47
|
attr_accessor :logs
|
48
|
+
|
48
49
|
def initialize
|
49
50
|
@logs = []
|
50
51
|
end
|
@@ -83,8 +84,13 @@ module TestDoubles
|
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
86
|
-
class AnAction
|
87
|
-
|
87
|
+
class AnAction
|
88
|
+
extend FunctionalLightService::Action
|
89
|
+
end
|
90
|
+
|
91
|
+
class AnotherAction
|
92
|
+
extend FunctionalLightService::Action
|
93
|
+
end
|
88
94
|
|
89
95
|
class AnOrganizer
|
90
96
|
extend FunctionalLightService::Organizer
|
@@ -166,14 +172,18 @@ module TestDoubles
|
|
166
172
|
promises :latte
|
167
173
|
|
168
174
|
executed do |context|
|
175
|
+
context.fail!("Can't make a latte from a milk that's very hot!") if context.milk == :very_hot
|
176
|
+
|
177
|
+
if context.milk == :super_hot
|
178
|
+
error_message = "Can't make a latte from a milk that's super hot!"
|
179
|
+
context.fail_with_rollback!(error_message)
|
180
|
+
end
|
181
|
+
|
169
182
|
context[:latte] = "#{context.coffee} - with lots of #{context.milk}"
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
context.fail_with_rollback!("Can't make a latte from a milk that's super hot!")
|
175
|
-
when "5%" then
|
176
|
-
context.skip_remaining!("Can't make a latte with a fatty milk like that!")
|
183
|
+
|
184
|
+
if context.milk == "5%"
|
185
|
+
msg = "Can't make a latte with a fatty milk like that!"
|
186
|
+
context.skip_remaining!(msg)
|
177
187
|
next context
|
178
188
|
end
|
179
189
|
end
|
@@ -472,7 +482,9 @@ module TestDoubles
|
|
472
482
|
class NullAction
|
473
483
|
extend FunctionalLightService::Action
|
474
484
|
|
485
|
+
# rubocop:disable Lint/EmptyBlock
|
475
486
|
executed { |_ctx| }
|
487
|
+
# rubocop:enable Lint/EmptyBlock
|
476
488
|
end
|
477
489
|
|
478
490
|
class TestIterate
|
metadata
CHANGED
@@ -1,127 +1,207 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: functional-light-service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boscolo Michele
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-inflector
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.2'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
22
|
+
version: 0.2.1
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.2'
|
24
30
|
- - ">="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
32
|
+
version: 0.2.1
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: i18n
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.8'
|
31
40
|
- - ">="
|
32
41
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.8.
|
42
|
+
version: 1.8.11
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '1.8'
|
38
50
|
- - ">="
|
39
51
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.8.
|
52
|
+
version: 1.8.11
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: i18n
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.8'
|
45
60
|
- - ">="
|
46
61
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.8.
|
62
|
+
version: 1.8.11
|
48
63
|
type: :development
|
49
64
|
prerelease: false
|
50
65
|
version_requirements: !ruby/object:Gem::Requirement
|
51
66
|
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.8'
|
52
70
|
- - ">="
|
53
71
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.8.
|
72
|
+
version: 1.8.11
|
55
73
|
- !ruby/object:Gem::Dependency
|
56
74
|
name: dry-inflector
|
57
75
|
requirement: !ruby/object:Gem::Requirement
|
58
76
|
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.2'
|
59
80
|
- - ">="
|
60
81
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.2.
|
82
|
+
version: 0.2.1
|
62
83
|
type: :development
|
63
84
|
prerelease: false
|
64
85
|
version_requirements: !ruby/object:Gem::Requirement
|
65
86
|
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.2'
|
66
90
|
- - ">="
|
67
91
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2.
|
92
|
+
version: 0.2.1
|
69
93
|
- !ruby/object:Gem::Dependency
|
70
94
|
name: rspec
|
71
95
|
requirement: !ruby/object:Gem::Requirement
|
72
96
|
requirements:
|
73
97
|
- - "~>"
|
74
98
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
99
|
+
version: 3.10.0
|
76
100
|
type: :development
|
77
101
|
prerelease: false
|
78
102
|
version_requirements: !ruby/object:Gem::Requirement
|
79
103
|
requirements:
|
80
104
|
- - "~>"
|
81
105
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
106
|
+
version: 3.10.0
|
83
107
|
- !ruby/object:Gem::Dependency
|
84
108
|
name: simplecov
|
85
109
|
requirement: !ruby/object:Gem::Requirement
|
86
110
|
requirements:
|
87
111
|
- - "~>"
|
88
112
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
113
|
+
version: 0.21.2
|
90
114
|
type: :development
|
91
115
|
prerelease: false
|
92
116
|
version_requirements: !ruby/object:Gem::Requirement
|
93
117
|
requirements:
|
94
118
|
- - "~>"
|
95
119
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
120
|
+
version: 0.21.2
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: simplecov-cobertura
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "~>"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 2.1.0
|
128
|
+
type: :development
|
129
|
+
prerelease: false
|
130
|
+
version_requirements: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - "~>"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 2.1.0
|
97
135
|
- !ruby/object:Gem::Dependency
|
98
136
|
name: rubocop
|
99
137
|
requirement: !ruby/object:Gem::Requirement
|
100
138
|
requirements:
|
101
139
|
- - "~>"
|
102
140
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
141
|
+
version: 1.25.0
|
104
142
|
type: :development
|
105
143
|
prerelease: false
|
106
144
|
version_requirements: !ruby/object:Gem::Requirement
|
107
145
|
requirements:
|
108
146
|
- - "~>"
|
109
147
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
148
|
+
version: 1.25.0
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: rubocop-performance
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - "~>"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 1.13.2
|
156
|
+
type: :development
|
157
|
+
prerelease: false
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - "~>"
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 1.13.2
|
111
163
|
- !ruby/object:Gem::Dependency
|
112
164
|
name: pry
|
113
165
|
requirement: !ruby/object:Gem::Requirement
|
114
166
|
requirements:
|
115
167
|
- - "~>"
|
116
168
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
169
|
+
version: 0.14.1
|
170
|
+
type: :development
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - "~>"
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: 0.14.1
|
177
|
+
- !ruby/object:Gem::Dependency
|
178
|
+
name: solargraph
|
179
|
+
requirement: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - "~>"
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: 0.44.2
|
118
184
|
type: :development
|
119
185
|
prerelease: false
|
120
186
|
version_requirements: !ruby/object:Gem::Requirement
|
121
187
|
requirements:
|
122
188
|
- - "~>"
|
123
189
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
190
|
+
version: 0.44.2
|
191
|
+
- !ruby/object:Gem::Dependency
|
192
|
+
name: nokogiri
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - "~>"
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: 1.12.5
|
198
|
+
type: :development
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - "~>"
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 1.12.5
|
125
205
|
description: A service skeleton with an emphasis on simplicity with a pinch a functional
|
126
206
|
programming
|
127
207
|
email:
|
@@ -130,9 +210,11 @@ executables: []
|
|
130
210
|
extensions: []
|
131
211
|
extra_rdoc_files: []
|
132
212
|
files:
|
213
|
+
- ".github/workflows/project-build.yml"
|
133
214
|
- ".gitignore"
|
134
215
|
- ".rspec"
|
135
216
|
- ".rubocop.yml"
|
217
|
+
- ".solargraph.yml"
|
136
218
|
- ".travis.yml"
|
137
219
|
- Appraisals
|
138
220
|
- CHANGELOG.md
|
@@ -143,8 +225,8 @@ files:
|
|
143
225
|
- Rakefile
|
144
226
|
- VERSION
|
145
227
|
- functional-light-service.gemspec
|
146
|
-
- gemfiles/
|
147
|
-
- gemfiles/
|
228
|
+
- gemfiles/dry_inflector_0_2_1.gemfile
|
229
|
+
- gemfiles/i18n_1_8_11.gemfile
|
148
230
|
- lib/functional-light-service.rb
|
149
231
|
- lib/functional-light-service/action.rb
|
150
232
|
- lib/functional-light-service/configuration.rb
|
@@ -241,7 +323,7 @@ homepage: https://github.com/sphynx79/functional-light-service
|
|
241
323
|
licenses:
|
242
324
|
- MIT
|
243
325
|
metadata: {}
|
244
|
-
post_install_message:
|
326
|
+
post_install_message:
|
245
327
|
rdoc_options: []
|
246
328
|
require_paths:
|
247
329
|
- lib
|
@@ -249,15 +331,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
249
331
|
requirements:
|
250
332
|
- - ">="
|
251
333
|
- !ruby/object:Gem::Version
|
252
|
-
version:
|
334
|
+
version: 2.6.0
|
253
335
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
336
|
requirements:
|
255
337
|
- - ">="
|
256
338
|
- !ruby/object:Gem::Version
|
257
339
|
version: '0'
|
258
340
|
requirements: []
|
259
|
-
rubygems_version: 3.
|
260
|
-
signing_key:
|
341
|
+
rubygems_version: 3.2.28
|
342
|
+
signing_key:
|
261
343
|
specification_version: 4
|
262
344
|
summary: A service skeleton with an emphasis on simplicity with a pinch a functional
|
263
345
|
programming
|