simple_service 1.3.91 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3f165a989654527ffc56c5a8b89ae3e14acfd64
4
- data.tar.gz: 1811b820702a489371c75685f093084fe8832ef3
3
+ metadata.gz: 62bc0c7fd840718bc870a5b2a62d02c72def3b6e
4
+ data.tar.gz: 30cfd20fdfc0e43da4cde0d96b7d8a0675a744b8
5
5
  SHA512:
6
- metadata.gz: 4519560c0ba043b3a42cfd423c5e84d4b3120b79e7f1f2acc339a27c690a5455aa4362f4153b1c1bd684dab61e00688064bcecaefb188b8a1319b8bcc83b2cb4
7
- data.tar.gz: 2c33e1fc6ac560f743dd74e818af6a04b64d8847c7bfcb1b9ef67d8005cdafb2d73a58e5ea20ff770c3e1783d814e25f98a4b9952dcdb69f8b8942d840040e40
6
+ metadata.gz: 819f9b02b8f576f378201e44f034495225e10aaf4cde5df67864ecfc25e0422fce2f32a5e05b6643a13531d23b94719e29b4b50e9e71fada2c23b427c8d25fd7
7
+ data.tar.gz: 2845e7c5d198fbaba131778af47b63a8c077c0e49b558cff40f1b574189a32cd74c26af0cd2eae36041218dbb4fdbe32fcb8f1758113e4d6e043b53de806f993
@@ -1,11 +1,16 @@
1
1
  module SimpleService
2
2
 
3
+ # TODO: move context logic here?
3
4
  module Context
4
5
 
5
6
  def success?
6
7
 
7
8
  end
8
9
 
10
+ def success!
11
+
12
+ end
13
+
9
14
  def failure?
10
15
 
11
16
  end
@@ -28,8 +28,8 @@ module SimpleService
28
28
  _commands.each do |command|
29
29
 
30
30
  # halt further command calls if success has been set to false
31
- # in a previously called command
32
- break if context[:success] == false
31
+ # in a previously called command or halt is set
32
+ break if context[:success] == false || context[:halt] == true
33
33
 
34
34
  # if command class defines "expects" then only feed the command
35
35
  # those keys, otherwise just give it the entire context
@@ -44,6 +44,10 @@ module SimpleService
44
44
  !successful?
45
45
  end
46
46
 
47
+ def halted?
48
+ context.has_key?(:halt) || context[:halt] == true
49
+ end
50
+
47
51
  def successful?
48
52
  !context.has_key?(:success) || context[:success] == true
49
53
  end
@@ -89,7 +93,7 @@ module SimpleService
89
93
  end
90
94
 
91
95
  def find_specified_return_keys
92
- if returns.nil? || returns.empty? || failed?
96
+ if returns.nil? || returns.empty? || failed? || halted?
93
97
  context
94
98
  else
95
99
  returns.inject({}) do |to_return, return_param|
@@ -131,9 +135,16 @@ module SimpleService
131
135
 
132
136
  def failure!(message = nil)
133
137
  context[:success] = false
138
+ context[:halt] = true
134
139
  context[:message] = message || 'There was a problem'
135
140
  end
136
141
 
142
+ def success!(message = nil)
143
+ context[:success] = true
144
+ context[:halt] = true
145
+ context[:message] = message || 'Success! Returned early'
146
+ end
147
+
137
148
  def define_getters_and_setters
138
149
  all_context_keys.each do |key|
139
150
  self.class.class_eval do
@@ -1,3 +1,3 @@
1
1
  module SimpleService
2
- VERSION = '1.3.91'
2
+ VERSION = '1.4.0'
3
3
  end
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.3'
22
- spec.add_development_dependency 'rake', '~> 10.4.2'
23
- spec.add_development_dependency 'rspec', '~> 3.2.0'
24
- spec.add_development_dependency 'pry', '~> 0.10.1'
21
+ spec.add_development_dependency 'bundler', '~> 1.15.3'
22
+ spec.add_development_dependency 'rake', '~> 12.0.0'
23
+ spec.add_development_dependency 'rspec', '~> 3.6.0'
24
+ spec.add_development_dependency 'pry', '~> 0.10.4'
25
25
  spec.add_development_dependency 'simplecov'
26
26
  spec.add_development_dependency 'codeclimate-test-reporter'
27
27
  end
@@ -158,6 +158,41 @@ describe SimpleService::Organizer do
158
158
 
159
159
  end
160
160
 
161
+ context 'service with command that calls success!' do
162
+
163
+ class SuccessAndReturnMessage < SimpleService::Command
164
+ returns :something
165
+ def call
166
+ context[:something] = 'yes!'
167
+ success!('success called prior to all commands being run')
168
+ end
169
+ end
170
+
171
+ class SuccessCalledThisShouldNotRun < SimpleService::Command
172
+ def call
173
+ raise 'should not have gotten here'
174
+ end
175
+ end
176
+
177
+ class SucceedAndReturn < SimpleService::Organizer
178
+ returns :something
179
+ commands SuccessAndReturnMessage, SuccessCalledThisShouldNotRun
180
+ end
181
+
182
+ it 'returns a message' do
183
+ expect(SucceedAndReturn.call[:message]).to eql(
184
+ 'success called prior to all commands being run')
185
+ end
186
+
187
+ it 'returns success as true' do
188
+ expect(SucceedAndReturn.call[:success]).to eql(true)
189
+ end
190
+
191
+ it 'does not raise an exception' do
192
+ expect { SucceedAndReturn.call }.to_not raise_error
193
+ end
194
+ end
195
+
161
196
  context 'when arguments are not a hash' do
162
197
 
163
198
  class DoNothingCommand < SimpleService::Command
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.91
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarrod Spillers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-22 00:00:00.000000000 Z
11
+ date: 2017-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: 1.15.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: 1.15.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 10.4.2
33
+ version: 12.0.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 10.4.2
40
+ version: 12.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.2.0
47
+ version: 3.6.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.2.0
54
+ version: 3.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.10.1
61
+ version: 0.10.4
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.10.1
68
+ version: 0.10.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  version: '0'
155
155
  requirements: []
156
156
  rubyforge_project:
157
- rubygems_version: 2.5.1
157
+ rubygems_version: 2.6.11
158
158
  signing_key:
159
159
  specification_version: 4
160
160
  summary: A minimal service object composer with support for individual commands and
@@ -168,3 +168,4 @@ test_files:
168
168
  - spec/lib/organizer_spec.rb
169
169
  - spec/simple_service_spec.rb
170
170
  - spec/spec_helper.rb
171
+ has_rdoc: