From c7d4d920e9be7f788f5244433a6812e1d7345a03 Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Tue, 18 Nov 2014 15:50:07 +0000 Subject: Specs for AdminCensorRuleController#destroy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note that these specs describe what the system does – not what it _should_ do! --- .../admin_censor_rule_controller_spec.rb | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'spec/controllers') diff --git a/spec/controllers/admin_censor_rule_controller_spec.rb b/spec/controllers/admin_censor_rule_controller_spec.rb index 9003bbf21..b54d90b54 100644 --- a/spec/controllers/admin_censor_rule_controller_spec.rb +++ b/spec/controllers/admin_censor_rule_controller_spec.rb @@ -69,6 +69,71 @@ describe AdminCensorRuleController do end + describe 'DELETE destroy' do + + before(:each) do + @censor_rule = FactoryGirl.create(:global_censor_rule) + end + + it 'finds the correct censor rule to destroy' do + pending("Assign the CensorRule to an instance variable") + # TODO: Replace :censor_rule_id with :id + delete :destroy, :censor_rule_id => @censor_rule.id + # TODO: Assign the CensorRule to an instance variable + expect(assigns[:censor_rule]).to eq(@censor_rule) + end + + it 'raises an error after destroying the rule' do + expect { + delete :destroy, :censor_rule_id => @censor_rule.id + }.to raise_error 'internal error' + end + + it 'confirms the censor rule is destroyed in all cases' do + pending("This actually raises an internal error anyway") + delete :destroy, :censor_rule_id => @censor_rule.id + msg = 'CensorRule was successfully destroyed.' + expect(flash[:notice]).to eq(msg) + end + + context 'a CensorRule with an associated InfoRequest' do + + before(:each) do + @censor_rule = FactoryGirl.create(:info_request_censor_rule) + end + + it 'purges the cache for the info request' do + @controller.should_receive(:expire_for_request).with(@censor_rule.info_request) + delete :destroy, :censor_rule_id => @censor_rule.id + end + + it 'redirects to the associated info request' do + delete :destroy, :censor_rule_id => @censor_rule.id + expect(response).to redirect_to(admin_request_show_path(@censor_rule.info_request)) + end + + end + + context 'a CensorRule with an associated User' do + + before(:each) do + @censor_rule = FactoryGirl.create(:user_censor_rule) + end + + it 'purges the cache for the user' do + @controller.should_receive(:expire_requests_for_user).with(@censor_rule.user) + delete :destroy, :censor_rule_id => @censor_rule.id + end + + it 'redirects to the associated info request' do + delete :destroy, :censor_rule_id => @censor_rule.id + expect(response).to redirect_to(admin_user_show_path(@censor_rule.user)) + end + + end + + end + end describe AdminCensorRuleController, "when making censor rules from the admin interface" do -- cgit v1.2.3