diff options
-rw-r--r-- | app/controllers/admin_censor_rule_controller.rb | 19 | ||||
-rw-r--r-- | spec/controllers/admin_censor_rule_controller_spec.rb | 48 |
2 files changed, 65 insertions, 2 deletions
diff --git a/app/controllers/admin_censor_rule_controller.rb b/app/controllers/admin_censor_rule_controller.rb index a5e2502b0..215c3e75d 100644 --- a/app/controllers/admin_censor_rule_controller.rb +++ b/app/controllers/admin_censor_rule_controller.rb @@ -23,16 +23,31 @@ class AdminCensorRuleController < AdminController end def create - params[:censor_rule][:last_edit_editor] = admin_current_user() - @censor_rule = CensorRule.new(params[:censor_rule]) + params[:censor_rule][:last_edit_editor] = admin_current_user + + if params[:info_request_id] + @info_request = InfoRequest.find(params[:info_request_id]) + @censor_rule = @info_request.censor_rules.build(params[:censor_rule]) + end + + if params[:user_id] + @censor_user = User.find(params[:user_id]) + @censor_rule = @censor_user.censor_rules.build(params[:censor_rule]) + end + + @censor_rule ||= CensorRule.new(params[:censor_rule]) + if @censor_rule.save if !@censor_rule.info_request.nil? expire_for_request(@censor_rule.info_request) end + if !@censor_rule.user.nil? expire_requests_for_user(@censor_rule.user) end + flash[:notice] = 'CensorRule was successfully created.' + if !@censor_rule.info_request.nil? redirect_to admin_request_show_url(@censor_rule.info_request) elsif !@censor_rule.user.nil? diff --git a/spec/controllers/admin_censor_rule_controller_spec.rb b/spec/controllers/admin_censor_rule_controller_spec.rb index 85f46801a..6e12a1743 100644 --- a/spec/controllers/admin_censor_rule_controller_spec.rb +++ b/spec/controllers/admin_censor_rule_controller_spec.rb @@ -94,6 +94,54 @@ describe AdminCensorRuleController do expect(assigns[:censor_rule].last_edit_editor).to eq('*unknown*') end + context 'info_request_id param' do + + it 'finds an info request if the info_request_id param is supplied' do + info_request = FactoryGirl.create(:info_request) + post :create, :info_request_id => info_request.id, + :censor_rule => @censor_rule_params + expect(assigns[:info_request]).to eq(info_request) + end + + it 'associates the info request with the new censor rule' do + info_request = FactoryGirl.create(:info_request) + post :create, :info_request_id => info_request.id, + :censor_rule => @censor_rule_params + expect(assigns[:censor_rule].info_request).to eq(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 + expect(assigns[:info_request]).to be_nil + end + + end + + context 'user_id param' do + + it 'finds a user if the user_id param is supplied' do + user = FactoryGirl.create(:user) + post :create, :user_id => user.id, + :censor_rule => @censor_rule_params + expect(assigns[:censor_user]).to eq(user) + end + + it 'associates the user with the new censor rule' do + user = FactoryGirl.create(:user) + post :create, :user_id => user.id, + :censor_rule => @censor_rule_params + expect(assigns[:censor_rule].user).to eq(user) + end + + + it 'does not find a user if no user_id param is supplied' do + post :create, :censor_rule => @censor_rule_params + expect(assigns[:censor_user]).to be_nil + end + + end + context 'successfully saving the censor rule' do before(:each) do |