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 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