functional-light-service 0.3.4 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
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 => "../"