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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afad05d4876e7cafd22bb8bce2730a169cb9e029
4
- data.tar.gz: 703a9e2891a39498f4b6de3bb9bb64cc63f85456
3
+ metadata.gz: b15acb3ccb93f710feacd808e1585005638843f7
4
+ data.tar.gz: def0376ab7d6c65223191490bc7d71815f0b6390
5
5
  SHA512:
6
- metadata.gz: 369f6259e634ab762d1869c4aa74be7d29a5b284ff0a5098c26e0368df46f6ba48c39d1595329bfd64912b1fb0fc9cc9d57553ed362cbff9637447c6e84ecde3
7
- data.tar.gz: e94ab5a22735d6e25fd9a90087c53d2ee31fd7f8ebfc793cbe9c04e64fc3ec4e05e769b021b4e561ac0ce6f0b88a7b0bf51705dafcb7db4ac6f453dee53ea661
6
+ metadata.gz: e80715590ec3ee6174c938dd681652b2539c4abb2e6a6e04296333b00915ce0afb511ec719b8abd4a10233d3b43a0499d65d70c110d3cc552ec71fc44aac5cdc
7
+ data.tar.gz: 0f8e90eaa1acc799fb8932d78252b7e463dea6557c7e78709f8acddf2ef0c9dbadc12a051e57f0bcc24f09f3ba1651b8704cd9a4c7d9c2f49be5b94e5a7d5632
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.4
@@ -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.3 ruby lib
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.3"
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-01-26"
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 = [
@@ -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 not invoke callback if halted with options" do
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.3
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-01-26 00:00:00.000000000 Z
11
+ date: 2016-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport