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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/project-build.yml +39 -0
  3. data/.rubocop.yml +103 -15
  4. data/.solargraph.yml +11 -0
  5. data/.travis.yml +5 -5
  6. data/Appraisals +2 -2
  7. data/CHANGELOG.md +48 -0
  8. data/Gemfile +2 -2
  9. data/README.md +3 -1
  10. data/VERSION +1 -1
  11. data/functional-light-service.gemspec +14 -8
  12. data/gemfiles/dry_inflector_0_2_1.gemfile +5 -0
  13. data/gemfiles/i18n_1_8_11.gemfile +5 -0
  14. data/lib/functional-light-service/context/key_verifier.rb +2 -2
  15. data/lib/functional-light-service/context.rb +152 -154
  16. data/lib/functional-light-service/functional/enum.rb +2 -6
  17. data/lib/functional-light-service/functional/maybe.rb +1 -0
  18. data/lib/functional-light-service/functional/null.rb +1 -1
  19. data/lib/functional-light-service/functional/option.rb +0 -2
  20. data/lib/functional-light-service/functional/result.rb +2 -2
  21. data/lib/functional-light-service/organizer/with_reducer_log_decorator.rb +2 -2
  22. data/lib/functional-light-service/testing/context_factory.rb +2 -0
  23. data/lib/functional-light-service/version.rb +1 -1
  24. data/spec/acceptance/fail_spec.rb +42 -16
  25. data/spec/acceptance/organizer/reduce_if_spec.rb +32 -0
  26. data/spec/context/inspect_spec.rb +6 -21
  27. data/spec/context_spec.rb +1 -1
  28. data/spec/lib/deterministic/monad_axioms.rb +2 -0
  29. data/spec/lib/deterministic/monad_spec.rb +2 -0
  30. data/spec/lib/deterministic/null_spec.rb +2 -0
  31. data/spec/lib/enum_spec.rb +3 -1
  32. data/spec/sample/looks_up_tax_percentage_action_spec.rb +3 -1
  33. data/spec/spec_helper.rb +9 -8
  34. data/spec/test_doubles.rb +21 -9
  35. metadata +107 -25
  36. data/gemfiles/dry_inflector_0_2.gemfile +0 -8
  37. 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
- if ENV['RUN_COVERAGE_REPORT']
5
- require 'simplecov'
4
+ require 'simplecov'
6
5
 
7
- SimpleCov.start do
8
- add_filter 'vendor/'
9
- add_filter %r{^/spec/}
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; end
87
- class AnotherAction; end
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
- case context.milk
171
- when :very_hot then
172
- context.fail!("Can't make a latte from a milk that's very hot!")
173
- when :super_hot then
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.3.4
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: 2021-12-16 00:00:00.000000000 Z
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.0
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.0
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.2
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.2
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.2
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.2
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.0
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.0
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: '3.0'
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: '3.0'
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.16.1
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.16.1
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: 0.63.1
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: 0.63.1
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.12.2
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.12.2
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/dry_inflector_0_2.gemfile
147
- - gemfiles/i18n_1_8.gemfile
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: '0'
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.1.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
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal", "~> 2.0"
6
- gem "dry-inflector", "~> 0.2.0"
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal", "~> 2.0"
6
- gem "i18n", "~> 1.8.2"
7
-
8
- gemspec :path => "../"