exposure 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/Manifest.txt +41 -0
  2. data/README.mdown +39 -0
  3. data/Rakefile +26 -0
  4. data/exposure.gemspec +31 -0
  5. data/lib/exposure/common.rb +127 -0
  6. data/lib/exposure/configuration.rb +63 -0
  7. data/lib/exposure/patterns/resource.rb +226 -0
  8. data/lib/exposure/patterns/resources.rb +323 -0
  9. data/lib/exposure.rb +14 -0
  10. data/script/console +10 -0
  11. data/script/destroy +14 -0
  12. data/script/generate +14 -0
  13. data/spec/custom_matchers.rb +41 -0
  14. data/spec/exposure_spec.rb +4 -0
  15. data/spec/factories/pirate_factory.rb +8 -0
  16. data/spec/factories/ship_factory.rb +3 -0
  17. data/spec/finders/finder_spec.rb +53 -0
  18. data/spec/finders/nested_resources_finder_spec.rb +29 -0
  19. data/spec/fixtures/pirates/edit.erb +0 -0
  20. data/spec/fixtures/pirates/index.erb +0 -0
  21. data/spec/fixtures/pirates/new.erb +0 -0
  22. data/spec/fixtures/pirates/show.erb +0 -0
  23. data/spec/fixtures/ships/edit.erb +0 -0
  24. data/spec/fixtures/ships/index.erb +0 -0
  25. data/spec/fixtures/ships/new.erb +0 -0
  26. data/spec/fixtures/ships/show.erb +0 -0
  27. data/spec/flashers/flash_with_block_spec.rb +32 -0
  28. data/spec/flashers/flash_with_method_spec.rb +86 -0
  29. data/spec/flashers/flash_with_proc_spec.rb +83 -0
  30. data/spec/flashers/flash_with_string_spec.rb +82 -0
  31. data/spec/resource_spec.rb +192 -0
  32. data/spec/resources_spec.rb +204 -0
  33. data/spec/responders/respond_to_mime_types_spec.rb +44 -0
  34. data/spec/responders/respond_with_block_spec.rb +84 -0
  35. data/spec/responders/respond_with_method_spec.rb +84 -0
  36. data/spec/responders/respond_with_proc_spec.rb +79 -0
  37. data/spec/spec.opts +1 -0
  38. data/spec/spec_helper.rb +71 -0
  39. data/spec/spec_rails_helper.rb +22 -0
  40. data/tasks/rspec.rake +21 -0
  41. data/tasks/shoulda.rake +15 -0
  42. metadata +106 -0
@@ -0,0 +1,83 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "flash messages with procs", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+
8
+ controller_name :pirates
9
+
10
+ before(:each) do
11
+ @controller = PiratesController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
+ ActionController::Routing::Routes.draw do |map|
15
+ map.resources :pirates, :collection => {:test => :any}
16
+ end
17
+
18
+ @custom_flash_message = 'the flash was set'
19
+ @proc = Proc.new { 'the flash was set' }
20
+
21
+ @pirate = Factory.stub(:pirate)
22
+ Pirate.stub(:new => @pirate)
23
+ end
24
+
25
+ after(:each) do
26
+ PiratesController::FlashMessages[true].clear
27
+ PiratesController::FlashMessages[false].clear
28
+ end
29
+
30
+ describe "responding with a method call" do
31
+ before(:each) do
32
+ PiratesController.flash_for :create, :is => @proc
33
+ end
34
+
35
+ it "should respond with redirect to test on success" do
36
+ @pirate.stub(:save => true)
37
+ post(:create)
38
+ should set_the_flash.to(@custom_flash_message)
39
+ end
40
+
41
+ it "should respond with redirect to test on failure" do
42
+ @pirate.stub(:save => false)
43
+ post(:create)
44
+ should set_the_flash.to(@custom_flash_message)
45
+ end
46
+ end
47
+
48
+ describe "responding with a method call :on => :success" do
49
+ before(:each) do
50
+ PiratesController.flash_for :create, :is => @proc, :on => :success
51
+ end
52
+
53
+ it "should respond with custom response on success" do
54
+ @pirate.stub(:save => true)
55
+ post(:create)
56
+ should set_the_flash.to(@custom_flash_message)
57
+ end
58
+
59
+ it "should not respond with custom response on failure" do
60
+ @pirate.stub(:save => false)
61
+ post(:create)
62
+ should_not redirect_to({:action => 'test'})
63
+ end
64
+ end
65
+
66
+ describe "responding with a method call :on => :failure" do
67
+ before(:each) do
68
+ PiratesController.flash_for :create, :is => @proc, :on => :failure
69
+ end
70
+
71
+ it "should not respond with custom response on success" do
72
+ @pirate.stub(:save => true)
73
+ post(:create)
74
+ should_not redirect_to({:action => 'test'})
75
+ end
76
+
77
+ it "should respond with custom response on failure" do
78
+ @pirate.stub(:save => false)
79
+ post(:create)
80
+ should set_the_flash.to(@custom_flash_message)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "flash messages with strings", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+
8
+ controller_name :pirates
9
+
10
+ before(:each) do
11
+ @controller = PiratesController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
+ ActionController::Routing::Routes.draw do |map|
15
+ map.resources :pirates, :collection => {:test => :any}
16
+ end
17
+
18
+ @custom_flash_message = 'the flash was set'
19
+
20
+ @pirate = Factory.stub(:pirate)
21
+ Pirate.stub(:new => @pirate)
22
+ end
23
+
24
+ after(:each) do
25
+ PiratesController::FlashMessages[true].clear
26
+ PiratesController::FlashMessages[false].clear
27
+ end
28
+
29
+ describe "responding with a method call" do
30
+ before(:each) do
31
+ PiratesController.flash_for :create, :is => @custom_flash_message
32
+ end
33
+
34
+ it "should respond with redirect to test on success" do
35
+ @pirate.stub(:save => true)
36
+ post(:create)
37
+ should set_the_flash.to(@custom_flash_message)
38
+ end
39
+
40
+ it "should respond with redirect to test on failure" do
41
+ @pirate.stub(:save => false)
42
+ post(:create)
43
+ should set_the_flash.to(@custom_flash_message)
44
+ end
45
+ end
46
+
47
+ describe "responding with a method call :on => :success" do
48
+ before(:each) do
49
+ PiratesController.flash_for :create, :is => @custom_flash_message, :on => :success
50
+ end
51
+
52
+ it "should respond with custom response on success" do
53
+ @pirate.stub(:save => true)
54
+ post(:create)
55
+ should set_the_flash.to(@custom_flash_message)
56
+ end
57
+
58
+ it "should not respond with custom response on failure" do
59
+ @pirate.stub(:save => false)
60
+ post(:create)
61
+ should_not redirect_to({:action => 'test'})
62
+ end
63
+ end
64
+
65
+ describe "responding with a method call :on => :failure" do
66
+ before(:each) do
67
+ PiratesController.flash_for :create, :is => @custom_flash_message, :on => :failure
68
+ end
69
+
70
+ it "should not respond with custom response on success" do
71
+ @pirate.stub(:save => true)
72
+ post(:create)
73
+ should_not redirect_to({:action => 'test'})
74
+ end
75
+
76
+ it "should respond with custom response on failure" do
77
+ @pirate.stub(:save => false)
78
+ post(:create)
79
+ should set_the_flash.to(@custom_flash_message)
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,192 @@
1
+ # require File.dirname(__FILE__) + '/spec_helper'
2
+ #
3
+ # describe "a REST patterned resource of 'post'", :type => :controller do
4
+ # class ShipController < ActionController::Base
5
+ # expose_one :ship
6
+ # end
7
+ # controller_name :ship
8
+ #
9
+ # before(:each) do
10
+ # @controller = ShipController.new
11
+ # @request = ActionController::TestRequest.new
12
+ # @response = ActionController::TestResponse.new
13
+ # ActionController::Routing::Routes.draw do |map|
14
+ # map.resource :ship
15
+ # end
16
+ # end
17
+ #
18
+ # describe 'configuration' do
19
+ # it "has a resource name of 'post'" do
20
+ # @controller.send(:resource_name).should == 'ship'
21
+ # end
22
+ #
23
+ # %w(show new create edit update destroy).each do |action|
24
+ # it "has the REST action #{action}" do
25
+ # @controller.should respond_to(action)
26
+ # end
27
+ # end
28
+ # end
29
+ #
30
+ # describe 'show' do
31
+ # describe 'with found resource' do
32
+ # before(:each) do
33
+ # Ship.should_receive(:find).with('1').and_return(Factory.stub(:ship))
34
+ # get :show, {:id => 1}
35
+ # end
36
+ #
37
+ # it { should assign_to(:ship) }
38
+ # it { should assign_to(:resource) }
39
+ # it { should respond_with(:success) }
40
+ # it { should render_template(:show) }
41
+ # it { should_not set_the_flash }
42
+ # end
43
+ #
44
+ # describe 'with missing resource' do
45
+ # before(:each) do
46
+ # rescue_action_in_public!
47
+ # Ship.should_receive(:find).with('1').and_raise(ActiveRecord::RecordNotFound)
48
+ # get :show, {:id => 1}
49
+ # end
50
+ #
51
+ # it { should_not assign_to(:ship) }
52
+ # it { should_not assign_to(:resource) }
53
+ # it { should respond_with(:not_found) }
54
+ # it { should_not render_template(:show) }
55
+ # it { should_not set_the_flash }
56
+ # end
57
+ # end
58
+ #
59
+ # describe 'new' do
60
+ # before(:each) do
61
+ # get :new
62
+ # end
63
+ #
64
+ # it { should assign_to(:ship) }
65
+ # it { should assign_to(:resource) }
66
+ # it { should respond_with(:success) }
67
+ # it { should render_template(:new) }
68
+ # it { should_not set_the_flash }
69
+ #
70
+ # end
71
+ #
72
+ # describe 'create' do
73
+ # describe 'with valid data' do
74
+ # before(:each) do
75
+ # params = {
76
+ # :ship => {}
77
+ # }
78
+ # post_before_saving = Factory.build(:ship)
79
+ # Ship.should_receive(:new).with(params[:ship]).and_return(post_before_saving)
80
+ # post_before_saving.should_receive(:save).and_return(true)
81
+ # post(:create, params)
82
+ # end
83
+ #
84
+ # it { should assign_to(:ship) }
85
+ # it { should assign_to(:resource) }
86
+ # it { should respond_with(:redirect).to(:show) }
87
+ # it { should set_the_flash.to('Ship successfully created') }
88
+ # end
89
+ #
90
+ # describe 'with invalid data' do
91
+ # before(:each) do
92
+ # params = {
93
+ # :ship => {}
94
+ # }
95
+ # post_before_saving = Factory.build(:ship)
96
+ # Ship.should_receive(:new).with(params[:ship]).and_return(post_before_saving)
97
+ # post_before_saving.should_receive(:save).and_return(false)
98
+ # post(:create, params)
99
+ # end
100
+ #
101
+ # it { should assign_to(:ship) }
102
+ # it { should assign_to(:resource) }
103
+ # it { should respond_with(:success) }
104
+ # it { should render_template(:new) }
105
+ # it { should_not set_the_flash }
106
+ # end
107
+ # end
108
+ #
109
+ # describe 'edit' do
110
+ # describe 'with found resource' do
111
+ # before(:each) do
112
+ # Ship.should_receive(:find).with('1').and_return(Factory.stub(:ship))
113
+ # get :edit, {:id => 1}
114
+ # end
115
+ #
116
+ # it { should assign_to(:ship) }
117
+ # it { should assign_to(:resource) }
118
+ # it { should respond_with(:success) }
119
+ # it { should render_template(:edit) }
120
+ # it { should_not set_the_flash }
121
+ # end
122
+ #
123
+ # describe 'with missing resource' do
124
+ # before(:each) do
125
+ # rescue_action_in_public!
126
+ # Ship.should_receive(:find).with('1').and_raise(ActiveRecord::RecordNotFound)
127
+ # get :edit, {:id => 1}
128
+ # end
129
+ #
130
+ # it { should_not assign_to(:ship) }
131
+ # it { should_not assign_to(:resource) }
132
+ # it { should respond_with(:not_found) }
133
+ # it { should_not render_template(:edit) }
134
+ # it { should_not set_the_flash }
135
+ # end
136
+ # end
137
+ #
138
+ # describe 'update' do
139
+ # describe 'with valid data' do
140
+ # before(:each) do
141
+ # params = {
142
+ # :id => 1,
143
+ # :ship => {}
144
+ # }
145
+ # post_before_saving = Factory.build(:ship)
146
+ # Ship.should_receive(:find).with("1").and_return(post_before_saving)
147
+ # post_before_saving.should_receive(:update_attributes).with(params[:ship]).and_return(true)
148
+ # put(:update, params)
149
+ # end
150
+ #
151
+ # it { should assign_to(:ship) }
152
+ # it { should assign_to(:resource) }
153
+ # it { should respond_with(:redirect).to(:show) }
154
+ # it { should set_the_flash.to('Ship successfully updated') }
155
+ #
156
+ # end
157
+ #
158
+ # describe 'with invalid data' do
159
+ # before(:each) do
160
+ # params = {
161
+ # :id => 1,
162
+ # :ship => {}
163
+ # }
164
+ # post_before_saving = Factory.build(:ship)
165
+ # Ship.should_receive(:find).with("1").and_return(post_before_saving)
166
+ # post_before_saving.should_receive(:update_attributes).with(params[:ship]).and_return(false)
167
+ # put(:update, params)
168
+ # end
169
+ #
170
+ # it { should assign_to(:ship) }
171
+ # it { should assign_to(:resource) }
172
+ # it { should respond_with(:success) }
173
+ # it { should render_template(:edit) }
174
+ # it { should_not set_the_flash }
175
+ # end
176
+ # end
177
+ #
178
+ # describe 'destroy' do
179
+ # before(:each) do
180
+ # params = {
181
+ # :id => 1,
182
+ # }
183
+ # post_before_saving = Factory.build(:ship)
184
+ # Ship.should_receive(:find).with("1").and_return(post_before_saving)
185
+ # post_before_saving.should_receive(:destroy)
186
+ # delete(:destroy, params)
187
+ # end
188
+ #
189
+ # it { should respond_with(:redirect).to(:new) }
190
+ # it { should set_the_flash.to('Ship successfully removed') }
191
+ # end
192
+ # end
@@ -0,0 +1,204 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "a REST patterned resource of 'pirates'", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+ controller_name :pirates
8
+
9
+ before(:each) do
10
+ @controller = PiratesController.new
11
+ @request = ActionController::TestRequest.new
12
+ @response = ActionController::TestResponse.new
13
+ ActionController::Routing::Routes.draw do |map|
14
+ map.resources :pirates
15
+ end
16
+ end
17
+
18
+ describe 'configuration' do
19
+ it "has a resource name of 'post'" do
20
+ @controller.send(:resource_name).should == 'pirate'
21
+ end
22
+
23
+ %w(index show new create edit update destroy).each do |action|
24
+ it "has the REST action #{action}" do
25
+ @controller.should respond_to(action)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe 'index' do
31
+ before do
32
+ get :index
33
+ end
34
+
35
+ it { should assign_to(:pirates) }
36
+ it { should assign_to(:resources) }
37
+ it { should respond_with(:success) }
38
+ it { should render_template(:index) }
39
+ it { should_not set_the_flash }
40
+ end
41
+
42
+ describe 'show' do
43
+ describe 'with found resource' do
44
+ before(:each) do
45
+ Pirate.should_receive(:find).with('1').and_return(Factory.stub(:pirate))
46
+ get :show, {:id => 1}
47
+ end
48
+
49
+ it { should assign_to(:pirate) }
50
+ it { should assign_to(:resource) }
51
+ it { should respond_with(:success) }
52
+ it { should render_template(:show) }
53
+ it { should_not set_the_flash }
54
+ end
55
+
56
+ describe 'with missing resource' do
57
+ before(:each) do
58
+ rescue_action_in_public!
59
+ Pirate.should_receive(:find).with('1').and_raise(ActiveRecord::RecordNotFound)
60
+ get :show, {:id => 1}
61
+ end
62
+
63
+ it { should_not assign_to(:pirate) }
64
+ it { should_not assign_to(:resource) }
65
+ it { should respond_with(:not_found) }
66
+ it { should_not render_template(:show) }
67
+ it { should_not set_the_flash }
68
+ end
69
+ end
70
+
71
+ describe 'new' do
72
+ before(:each) do
73
+ get :new
74
+ end
75
+
76
+ it { should assign_to(:pirate) }
77
+ it { should assign_to(:resource) }
78
+ it { should respond_with(:success) }
79
+ it { should render_template(:new) }
80
+ it { should_not set_the_flash }
81
+
82
+ end
83
+
84
+ describe 'create' do
85
+ describe 'with valid data' do
86
+ before(:each) do
87
+ params = {
88
+ :pirate => {}
89
+ }
90
+ post_before_saving = Factory.build(:pirate)
91
+ Pirate.should_receive(:new).with(params[:pirate]).and_return(post_before_saving)
92
+ post_before_saving.should_receive(:save).and_return(true)
93
+ post(:create, params)
94
+ end
95
+
96
+ it { should assign_to(:pirate) }
97
+ it { should assign_to(:resource) }
98
+ it { should respond_with(:redirect).to(:index) }
99
+ it { should set_the_flash.to('Pirate successfully created') }
100
+ end
101
+
102
+ describe 'with invalid data' do
103
+ before(:each) do
104
+ params = {
105
+ :pirate => {}
106
+ }
107
+ post_before_saving = Factory.build(:pirate)
108
+ Pirate.should_receive(:new).with(params[:pirate]).and_return(post_before_saving)
109
+ post_before_saving.should_receive(:save).and_return(false)
110
+ post(:create, params)
111
+ end
112
+
113
+ it { should assign_to(:pirate) }
114
+ it { should assign_to(:resource) }
115
+ it { should respond_with(:success) }
116
+ it { should render_template(:new) }
117
+ it { should_not set_the_flash }
118
+ end
119
+ end
120
+
121
+ describe 'edit' do
122
+ describe 'with found resource' do
123
+ before(:each) do
124
+ Pirate.should_receive(:find).with('1').and_return(Factory.stub(:pirate))
125
+ get :edit, {:id => 1}
126
+ end
127
+
128
+ it { should assign_to(:pirate) }
129
+ it { should assign_to(:resource) }
130
+ it { should respond_with(:success) }
131
+ it { should render_template(:edit) }
132
+ it { should_not set_the_flash }
133
+ end
134
+
135
+ describe 'with missing resource' do
136
+ before(:each) do
137
+ rescue_action_in_public!
138
+ Pirate.should_receive(:find).with('1').and_raise(ActiveRecord::RecordNotFound)
139
+ get :edit, {:id => 1}
140
+ end
141
+
142
+ it { should_not assign_to(:pirate) }
143
+ it { should_not assign_to(:resource) }
144
+ it { should respond_with(:not_found) }
145
+ it { should_not render_template(:edit) }
146
+ it { should_not set_the_flash }
147
+ end
148
+ end
149
+
150
+ describe 'update' do
151
+ describe 'with valid data' do
152
+ before(:each) do
153
+ params = {
154
+ :id => 1,
155
+ :pirate => {}
156
+ }
157
+ post_before_saving = Factory.build(:pirate)
158
+ Pirate.should_receive(:find).with("1").and_return(post_before_saving)
159
+ post_before_saving.should_receive(:update_attributes).with(params[:pirate]).and_return(true)
160
+ put(:update, params)
161
+ end
162
+
163
+ it { should assign_to(:pirate) }
164
+ it { should assign_to(:resource) }
165
+ it { should respond_with(:redirect).to(:show) }
166
+ it { should set_the_flash.to('Pirate successfully updated') }
167
+
168
+ end
169
+
170
+ describe 'with invalid data' do
171
+ before(:each) do
172
+ params = {
173
+ :id => 1,
174
+ :pirate => {}
175
+ }
176
+ post_before_saving = Factory.build(:pirate)
177
+ Pirate.should_receive(:find).with("1").and_return(post_before_saving)
178
+ post_before_saving.should_receive(:update_attributes).with(params[:pirate]).and_return(false)
179
+ put(:update, params)
180
+ end
181
+
182
+ it { should assign_to(:pirate) }
183
+ it { should assign_to(:resource) }
184
+ it { should respond_with(:success) }
185
+ it { should render_template(:edit) }
186
+ it { should_not set_the_flash }
187
+ end
188
+ end
189
+
190
+ describe 'destroy' do
191
+ before(:each) do
192
+ params = {
193
+ :id => 1,
194
+ }
195
+ post_before_saving = Factory.build(:pirate)
196
+ Pirate.should_receive(:find).with("1").and_return(post_before_saving)
197
+ post_before_saving.should_receive(:destroy)
198
+ delete(:destroy, params)
199
+ end
200
+
201
+ it { should respond_with(:redirect).to(:index) }
202
+ it { should set_the_flash.to('Pirate successfully removed') }
203
+ end
204
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "mime type responders", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+
8
+ controller_name :pirates
9
+
10
+ before(:each) do
11
+ @controller = PiratesController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
+ ActionController::Routing::Routes.draw do |map|
15
+ map.resources :pirates, :collection => {:test => :any}
16
+ end
17
+ @pirate = Factory.stub(:pirate)
18
+ Pirate.stub(:new => @pirate)
19
+ end
20
+
21
+ after(:each) do
22
+ PiratesController::Responses.clear
23
+ end
24
+
25
+ it "should respond with not acceptable if no acceptable mime type is not found" do
26
+ @request.accept = "application/x-yaml"
27
+ @pirate.stub(:save => true)
28
+ post(:create)
29
+ should respond_with(:not_acceptable)
30
+ end
31
+
32
+ it "should respond with mime type when header is set" do
33
+ @request.accept = 'application/xml'
34
+ @pirate.stub(:save => true)
35
+ post(:create)
36
+ should respond_with_content_type(:xml)
37
+ end
38
+
39
+ it "should respond with mime type when params[:format] is set" do
40
+ @pirate.stub(:save => true)
41
+ post(:create, {:format => 'xml'})
42
+ should respond_with_content_type(:xml)
43
+ end
44
+ end
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "responders", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+
8
+ controller_name :pirates
9
+
10
+ before(:each) do
11
+ @controller = PiratesController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
+ ActionController::Routing::Routes.draw do |map|
15
+ map.resources :pirates, :collection => {:test => :any}
16
+ end
17
+ @pirate = Factory.stub(:pirate)
18
+ Pirate.stub(:new => @pirate)
19
+ end
20
+
21
+ after(:each) do
22
+ PiratesController::Responses.clear
23
+ end
24
+
25
+ describe "responding with a method call" do
26
+ before(:each) do
27
+ PiratesController.response_for :create do
28
+ redirect_to({:action => 'test'})
29
+ end
30
+ end
31
+
32
+ it "should respond with redirect to test on success" do
33
+ @pirate.stub(:save => true)
34
+ post(:create)
35
+ should redirect_to({:action => 'test'})
36
+ end
37
+
38
+ it "should respond with redirect to test on failure" do
39
+ @pirate.stub(:save => false)
40
+ post(:create)
41
+ should redirect_to({:action => 'test'})
42
+ end
43
+ end
44
+
45
+ describe "responding with a method call :on => :success" do
46
+ before(:each) do
47
+ PiratesController.response_for :create, :on => :success do
48
+ redirect_to({:action => 'test'})
49
+ end
50
+ end
51
+
52
+ it "should respond with custom response on success" do
53
+ @pirate.stub(:save => true)
54
+ post(:create)
55
+ should redirect_to({:action => 'test'})
56
+ end
57
+
58
+ it "should not respond with custom response on failure" do
59
+ @pirate.stub(:save => false)
60
+ post(:create)
61
+ should_not redirect_to({:action => 'test'})
62
+ end
63
+ end
64
+
65
+ describe "responding with a method call :on => :failure" do
66
+ before(:each) do
67
+ PiratesController.response_for :create, :on => :failure do
68
+ redirect_to({:action => 'test'})
69
+ end
70
+ end
71
+
72
+ it "should not respond with custom response on success" do
73
+ @pirate.stub(:save => true)
74
+ post(:create)
75
+ should_not redirect_to({:action => 'test'})
76
+ end
77
+
78
+ it "should respond with custom response on failure" do
79
+ @pirate.stub(:save => false)
80
+ post(:create)
81
+ should redirect_to({:action => 'test'})
82
+ end
83
+ end
84
+ end