application_service 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/application_service.gemspec +3 -3
- data/lib/application_service.rb +6 -2
- data/spec/application_service_spec.rb +70 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b15acb3ccb93f710feacd808e1585005638843f7
|
4
|
+
data.tar.gz: def0376ab7d6c65223191490bc7d71815f0b6390
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e80715590ec3ee6174c938dd681652b2539c4abb2e6a6e04296333b00915ce0afb511ec719b8abd4a10233d3b43a0499d65d70c110d3cc552ec71fc44aac5cdc
|
7
|
+
data.tar.gz: 0f8e90eaa1acc799fb8932d78252b7e463dea6557c7e78709f8acddf2ef0c9dbadc12a051e57f0bcc24f09f3ba1651b8704cd9a4c7d9c2f49be5b94e5a7d5632
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
data/application_service.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: application_service 0.2.
|
5
|
+
# stub: application_service 0.2.4 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "application_service"
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.4"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Nathan Woodhull"]
|
14
|
-
s.date = "2016-
|
14
|
+
s.date = "2016-02-06"
|
15
15
|
s.description = "A service layer scaffold for rails apps extracted from Agra"
|
16
16
|
s.email = "woodhull@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
data/lib/application_service.rb
CHANGED
@@ -3,12 +3,11 @@ require 'active_support/all'
|
|
3
3
|
class ApplicationService
|
4
4
|
|
5
5
|
include ActiveSupport::Callbacks
|
6
|
-
define_callbacks :save, :create, :update, :destroy, terminator: ->(target, result) { result == false }
|
6
|
+
define_callbacks :save, :create, :update, :destroy, {terminator: ->(target, result) { result == false }, skip_after_callbacks_if_terminated: true}
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
11
|
def self.before(callback, *args)
|
13
12
|
options = extract_callback_options(args)
|
14
13
|
|
@@ -23,6 +22,11 @@ class ApplicationService
|
|
23
22
|
def self.after(callback, *args)
|
24
23
|
options = extract_callback_options(args)
|
25
24
|
|
25
|
+
conditional = ActiveSupport::Callbacks::Conditionals::Value.new { |v|
|
26
|
+
v != false
|
27
|
+
}
|
28
|
+
options[:if] = Array(options[:if]) << conditional
|
29
|
+
|
26
30
|
args.each do |arg|
|
27
31
|
set_callback callback, :after, arg, options
|
28
32
|
if options.fetch(:skip_on_admin_save, false)
|
@@ -248,15 +248,53 @@ describe ApplicationService do
|
|
248
248
|
service.save(object)
|
249
249
|
end
|
250
250
|
|
251
|
-
it "should
|
251
|
+
it "should invoke callback if callback successful" do
|
252
|
+
service_klass = Class.new(ApplicationService) do
|
253
|
+
before :save, :before_save_callback1, :before_save_callback2
|
254
|
+
end
|
255
|
+
|
256
|
+
service = service_klass.new
|
257
|
+
service.should_receive(:before_save_callback2)
|
258
|
+
service.stub(:before_save_callback1).and_return(true)
|
259
|
+
service.save(object)
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should invoke subsequent callbacks if a callback is skipped with options" do
|
252
263
|
service_klass = Class.new(ApplicationService) do
|
253
264
|
before :save, :before_save_callback, if: 'false'
|
265
|
+
before :save, :before_save_callback_2
|
266
|
+
|
254
267
|
end
|
255
268
|
|
256
269
|
service = service_klass.new
|
257
270
|
service.should_not_receive(:before_save_callback)
|
271
|
+
service.should_receive(:before_save_callback_2)
|
272
|
+
|
273
|
+
object.should_receive(:save).and_return(true)
|
274
|
+
|
258
275
|
service.save(object)
|
259
276
|
end
|
277
|
+
|
278
|
+
it "should halt execution if callback fails" do
|
279
|
+
service_klass = Class.new(ApplicationService) do
|
280
|
+
before :save, :before_save_callback
|
281
|
+
end
|
282
|
+
|
283
|
+
service = service_klass.new
|
284
|
+
service.stub(:before_save_callback).and_return(false)
|
285
|
+
object.should_not_receive(:save)
|
286
|
+
expect(service.save(object)).to eq(false)
|
287
|
+
end
|
288
|
+
|
289
|
+
it "should invoke callback if conditional is true" do
|
290
|
+
service_klass = Class.new(ApplicationService) do
|
291
|
+
before :save, :before_save_callback, if: 'true'
|
292
|
+
end
|
293
|
+
|
294
|
+
service = service_klass.new
|
295
|
+
service.should_receive(:before_save_callback).and_return(true)
|
296
|
+
expect(service.save(object)).to eq(true)
|
297
|
+
end
|
260
298
|
end
|
261
299
|
|
262
300
|
describe '#after' do
|
@@ -295,6 +333,37 @@ describe ApplicationService do
|
|
295
333
|
service.should_receive(:after_save_callback_2).and_return(true)
|
296
334
|
service.save(object)
|
297
335
|
end
|
336
|
+
|
337
|
+
it "should invoke callback if conditional is true" do
|
338
|
+
service_klass = Class.new(ApplicationService) do
|
339
|
+
after :save, :after_save_callback, if: 'true'
|
340
|
+
end
|
341
|
+
|
342
|
+
service = service_klass.new
|
343
|
+
service.should_receive(:after_save_callback).and_return(true)
|
344
|
+
expect(service.save(object)).to eq(true)
|
345
|
+
end
|
346
|
+
|
347
|
+
it 'should not invoke callback if conditional is false' do
|
348
|
+
service_klass = Class.new(ApplicationService) do
|
349
|
+
after :save, :after_save_callback, if: 'false'
|
350
|
+
end
|
351
|
+
|
352
|
+
service = service_klass.new
|
353
|
+
service.should_not_receive(:after_save_callback)
|
354
|
+
expect(service.save(object)).to eq(true)
|
355
|
+
end
|
356
|
+
|
357
|
+
it 'should not invoke after save callbacks when save fails' do
|
358
|
+
service_klass = Class.new(ApplicationService) do
|
359
|
+
after :save, :after_save_callback
|
360
|
+
end
|
361
|
+
|
362
|
+
service = service_klass.new
|
363
|
+
object.should_receive(:save).and_return(false)
|
364
|
+
service.should_not_receive(:after_save_callback)
|
365
|
+
expect(service.save(object)).to eq(false)
|
366
|
+
end
|
298
367
|
end
|
299
368
|
end
|
300
369
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: application_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Woodhull
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|