application_service 0.0.1 → 0.0.2

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,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ee603240f72dc651aeac22e346c14444f57a0f26
4
- data.tar.gz: cd49b620585510edabf4178ff85a57c37eff0bd2
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTRmNDA2Y2RhZTQ1NDJhMDI4M2I1ZjQwNGZjODgxZDk3YmUyOTMwNA==
5
+ data.tar.gz: !binary |-
6
+ MWI2MDA5OWI2OWM5ZGE3NjMyOWIxZGE5NGQ5ZWM1ODljMzU2ZjlhMA==
5
7
  SHA512:
6
- metadata.gz: 14b7a8fc47c6ae77cf4fa3d79b3f03888e4a8573044200eaed899d6c1d2726be8d1bfc997c2ba2ea0467660d23cbe36e2c17bcf83d43b7ba7de4db6beecdf0f5
7
- data.tar.gz: f486c0061caf62f11ae63f0217c2bcff6b54ecb54cec779fccd28d17a28ccb61ea79250a92c83b930f1b03d26fd3a546631e0f08ef45fe362541bf7ff0ce88f1
8
+ metadata.gz: !binary |-
9
+ NjYxYzY4NjhkNDFmMjg4Y2RjNTNiNzUyYTkyYTQ3MzdhNzEyNWY1ZGI4NDc1
10
+ MmJiZTJiMGJlNDRhN2YzMTJmMjcxZjlmZTU0NjI2ODg2NGRhMjkyNDlhNWY2
11
+ YzE1MGYwZWZkZGI0NzEyYjRjZGQ2N2RkNjQwMTg1MzUwMzJiOGE=
12
+ data.tar.gz: !binary |-
13
+ YzUyMWY4ZDA2YTVhNzhkNTY4NTI1MjllMWEzNjI3ZDk3YTJhNmIyZTk4NDE5
14
+ Y2JlNjA1NmRhYzA3OWY0ZWNmZmU1NWMwMGZkMTZiNWQzZGNkNzJkZDk5ODNl
15
+ OWQwYzhiYWYwOTg2YmRkYmRmMmU2YjI1YWZmNjdmNDUwNzdjOTA=
@@ -1 +1 @@
1
- ruby-1.9.3-p286-perf
1
+ 1.9.3-p484
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -0,0 +1,60 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: application_service 0.0.2 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "application_service"
9
+ s.version = "0.0.2"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.authors = ["Nathan Woodhull"]
13
+ s.date = "2014-01-10"
14
+ s.description = "A service layer scaffold for rails apps extracted from Agra"
15
+ s.email = "woodhull@gmail.com"
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".rspec",
23
+ ".ruby-gemset",
24
+ ".ruby-version",
25
+ "Gemfile",
26
+ "Gemfile.lock",
27
+ "LICENSE.txt",
28
+ "README.rdoc",
29
+ "Rakefile",
30
+ "VERSION",
31
+ "application_service.gemspec",
32
+ "lib/application_service.rb",
33
+ "spec/application_service_spec.rb",
34
+ "spec/spec_helper.rb"
35
+ ]
36
+ s.homepage = "http://github.com/woodhull/application_service"
37
+ s.licenses = ["MIT"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = "2.1.11"
40
+ s.summary = "Service Layer Scaffold"
41
+
42
+ if s.respond_to? :specification_version then
43
+ s.specification_version = 4
44
+
45
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
47
+ s.add_development_dependency(%q<rspec>, [">= 0"])
48
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
49
+ else
50
+ s.add_dependency(%q<activesupport>, [">= 0"])
51
+ s.add_dependency(%q<rspec>, [">= 0"])
52
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<activesupport>, [">= 0"])
56
+ s.add_dependency(%q<rspec>, [">= 0"])
57
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
58
+ end
59
+ end
60
+
@@ -11,14 +11,18 @@ class ApplicationService
11
11
 
12
12
 
13
13
  def self.before(callback, *args)
14
+ options = extract_callback_options(args, '!halted')
15
+
14
16
  args.each do |arg|
15
- set_callback callback, :before, arg, :if => "!halted"
17
+ set_callback callback, :before, arg, options
16
18
  end
17
19
  end
18
20
 
19
21
  def self.after(callback, *args)
22
+ options = extract_callback_options(args, "!halted && value")
23
+
20
24
  args.each do |arg|
21
- set_callback callback, :after, arg, :if => "!halted && value"
25
+ set_callback callback, :after, arg, options
22
26
  end
23
27
  end
24
28
 
@@ -66,5 +70,15 @@ class ApplicationService
66
70
  end
67
71
  end
68
72
 
73
+ def self.extract_callback_options(args, default_if_option)
74
+ options = args.last.is_a?(Hash) ? args.pop : {}
75
+ if options && options.has_key?(:if)
76
+ options[:if] = [options[:if], default_if_option]
77
+ else
78
+ options[:if] = default_if_option
79
+ end
80
+
81
+ options
82
+ end
69
83
 
70
- end
84
+ end
@@ -52,4 +52,110 @@ describe ApplicationService do
52
52
  end
53
53
 
54
54
  end
55
- end
55
+
56
+ describe 'callbacks' do
57
+ let(:object) { double(new_record?: false, save: true) }
58
+
59
+ describe '#before' do
60
+ it "should allow option as last argument for single callback method" do
61
+ invoke_callback = false
62
+
63
+ service_klass = Class.new(ApplicationService) do
64
+ before :save, :before_save_callback, if: -> { invoke_callback }
65
+ end
66
+
67
+ service = service_klass.new
68
+ service.should_not_receive(:before_save_callback)
69
+ service.save(object)
70
+
71
+ invoke_callback = true
72
+ service = service_klass.new
73
+ service.should_receive(:before_save_callback).and_return(true)
74
+ service.save(object)
75
+ end
76
+
77
+ it "should allow option as last argument for multiple callback methods" do
78
+ invoke_callback = false
79
+
80
+ service_klass = Class.new(ApplicationService) do
81
+ before :save, :before_save_callback_1, :before_save_callback_2, if: -> { invoke_callback }
82
+ end
83
+
84
+ service = service_klass.new
85
+ service.should_not_receive(:before_save_callback_1)
86
+ service.should_not_receive(:before_save_callback_2)
87
+ service.save(object)
88
+
89
+ invoke_callback = true
90
+ service = service_klass.new
91
+ service.should_receive(:before_save_callback_1).and_return(true)
92
+ service.should_receive(:before_save_callback_2).and_return(true)
93
+ service.save(object)
94
+ end
95
+
96
+ it "should not invoke callback if halted without options" do
97
+ pending('Need to look deeper on ActiveSupport::Callback code to understand how halt works')
98
+
99
+ service_klass = Class.new(ApplicationService) do
100
+ before :save, :before_save_callback
101
+ end
102
+
103
+ service = service_klass.new
104
+ service.should_not_receive(:before_save_callback)
105
+ service.stub(:halted).and_return(true)
106
+ service.save(object)
107
+ end
108
+
109
+ it "should not invoke callback if halted with options" do
110
+ pending('Need to look deeper on ActiveSupport::Callback code to understand how halt works')
111
+
112
+ service_klass = Class.new(ApplicationService) do
113
+ before :save, :before_save_callback, if: 'true'
114
+ end
115
+
116
+ service = service_klass.new
117
+ service.should_not_receive(:before_save_callback)
118
+ service.stub(:halted).and_return(true)
119
+ service.save(object)
120
+ end
121
+ end
122
+
123
+ describe '#after' do
124
+ it "should allow option as last argument for single callback method" do
125
+ invoke_callback = false
126
+
127
+ service_klass = Class.new(ApplicationService) do
128
+ after :save, :after_save_callback, if: -> { invoke_callback }
129
+ end
130
+
131
+ service = service_klass.new
132
+ service.should_not_receive(:after_save_callback)
133
+ service.save(object)
134
+
135
+ invoke_callback = true
136
+ service = service_klass.new
137
+ service.should_receive(:after_save_callback).and_return(true)
138
+ service.save(object)
139
+ end
140
+
141
+ it "should allow option as last argument for multiple callback methods" do
142
+ invoke_callback = false
143
+
144
+ service_klass = Class.new(ApplicationService) do
145
+ after :save, :after_save_callback_1, :after_save_callback_2, if: -> { invoke_callback }
146
+ end
147
+
148
+ service = service_klass.new
149
+ service.should_not_receive(:after_save_callback_1)
150
+ service.should_not_receive(:after_save_callback_2)
151
+ service.save(object)
152
+
153
+ invoke_callback = true
154
+ service = service_klass.new
155
+ service.should_receive(:after_save_callback_1).and_return(true)
156
+ service.should_receive(:after_save_callback_2).and_return(true)
157
+ service.save(object)
158
+ end
159
+ end
160
+ end
161
+ end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: application_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Woodhull
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-30 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '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
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
@@ -44,14 +44,16 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 1.8.4
47
+ version: !binary |-
48
+ MS44LjQ=
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - ~>
53
54
  - !ruby/object:Gem::Version
54
- version: 1.8.4
55
+ version: !binary |-
56
+ MS44LjQ=
55
57
  description: A service layer scaffold for rails apps extracted from Agra
56
58
  email: woodhull@gmail.com
57
59
  executables: []
@@ -70,6 +72,7 @@ files:
70
72
  - README.rdoc
71
73
  - Rakefile
72
74
  - VERSION
75
+ - application_service.gemspec
73
76
  - lib/application_service.rb
74
77
  - spec/application_service_spec.rb
75
78
  - spec/spec_helper.rb
@@ -83,17 +86,17 @@ require_paths:
83
86
  - lib
84
87
  required_ruby_version: !ruby/object:Gem::Requirement
85
88
  requirements:
86
- - - '>='
89
+ - - ! '>='
87
90
  - !ruby/object:Gem::Version
88
91
  version: '0'
89
92
  required_rubygems_version: !ruby/object:Gem::Requirement
90
93
  requirements:
91
- - - '>='
94
+ - - ! '>='
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  requirements: []
95
98
  rubyforge_project:
96
- rubygems_version: 2.0.4
99
+ rubygems_version: 2.1.11
97
100
  signing_key:
98
101
  specification_version: 4
99
102
  summary: Service Layer Scaffold