application_service 0.2.3 → 0.2.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/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
|