aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Rees <gareth@mysociety.org>2014-11-19 10:30:42 +0000
committerGareth Rees <gareth@mysociety.org>2014-11-19 11:27:23 +0000
commitd5c7e08d58dc5ad52f16eccd9c456543503e4360 (patch)
tree9ab50c40852774d2bacd35469b7e1cf6597434d1
parent87bc2e24d2845d21911b85581d0d611d888a6315 (diff)
Set the form URL to POST to in #create
Direct the (re-rendered) form at the correct route for the association (or use the generic route if the rule is being created for some other reason)
-rw-r--r--app/controllers/admin_censor_rule_controller.rb3
-rw-r--r--spec/controllers/admin_censor_rule_controller_spec.rb17
2 files changed, 20 insertions, 0 deletions
diff --git a/app/controllers/admin_censor_rule_controller.rb b/app/controllers/admin_censor_rule_controller.rb
index 215c3e75d..676c43500 100644
--- a/app/controllers/admin_censor_rule_controller.rb
+++ b/app/controllers/admin_censor_rule_controller.rb
@@ -28,14 +28,17 @@ class AdminCensorRuleController < AdminController
if params[:info_request_id]
@info_request = InfoRequest.find(params[:info_request_id])
@censor_rule = @info_request.censor_rules.build(params[:censor_rule])
+ @form_url = admin_info_request_censor_rules_path(@info_request)
end
if params[:user_id]
@censor_user = User.find(params[:user_id])
@censor_rule = @censor_user.censor_rules.build(params[:censor_rule])
+ @form_url = admin_user_censor_rules_path(@censor_user)
end
@censor_rule ||= CensorRule.new(params[:censor_rule])
+ @form_url ||= admin_rule_create_path
if @censor_rule.save
if !@censor_rule.info_request.nil?
diff --git a/spec/controllers/admin_censor_rule_controller_spec.rb b/spec/controllers/admin_censor_rule_controller_spec.rb
index 6e12a1743..deaef1d7f 100644
--- a/spec/controllers/admin_censor_rule_controller_spec.rb
+++ b/spec/controllers/admin_censor_rule_controller_spec.rb
@@ -94,6 +94,11 @@ describe AdminCensorRuleController do
expect(assigns[:censor_rule].last_edit_editor).to eq('*unknown*')
end
+ it 'sets the URL for the form to POST to' do
+ post :create, :censor_rule => @censor_rule_params
+ expect(assigns[:form_url]).to eq(admin_rule_create_path)
+ end
+
context 'info_request_id param' do
it 'finds an info request if the info_request_id param is supplied' do
@@ -110,6 +115,12 @@ describe AdminCensorRuleController do
expect(assigns[:censor_rule].info_request).to eq(info_request)
end
+ it 'sets the URL for the form to POST to' do
+ info_request = FactoryGirl.create(:info_request)
+ post :create, :info_request_id => info_request.id,
+ :censor_rule => @censor_rule_params
+ expect(assigns[:form_url]).to eq(admin_info_request_censor_rules_path(info_request))
+ end
it 'does not find an info request if no info_request_id param is supplied' do
post :create, :censor_rule => @censor_rule_params
@@ -134,6 +145,12 @@ describe AdminCensorRuleController do
expect(assigns[:censor_rule].user).to eq(user)
end
+ it 'sets the URL for the form to POST to' do
+ user = FactoryGirl.create(:user)
+ post :create, :user_id => user.id,
+ :censor_rule => @censor_rule_params
+ expect(assigns[:form_url]).to eq(admin_user_censor_rules_path(user))
+ end
it 'does not find a user if no user_id param is supplied' do
post :create, :censor_rule => @censor_rule_params