application_service 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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