diff options
author | Gareth Rees <gareth@mysociety.org> | 2014-11-19 10:30:42 +0000 |
---|---|---|
committer | Gareth Rees <gareth@mysociety.org> | 2014-11-19 11:27:23 +0000 |
commit | d5c7e08d58dc5ad52f16eccd9c456543503e4360 (patch) | |
tree | 9ab50c40852774d2bacd35469b7e1cf6597434d1 | |
parent | 87bc2e24d2845d21911b85581d0d611d888a6315 (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.rb | 3 | ||||
-rw-r--r-- | spec/controllers/admin_censor_rule_controller_spec.rb | 17 |
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 |