diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/censor_rule_spec.rb | 42 | ||||
-rw-r--r-- | spec/models/info_request_spec.rb | 22 | ||||
-rw-r--r-- | spec/spec_helper.rb | 13 |
3 files changed, 75 insertions, 2 deletions
diff --git a/spec/models/censor_rule_spec.rb b/spec/models/censor_rule_spec.rb index 44087c5a6..d5797ec74 100644 --- a/spec/models/censor_rule_spec.rb +++ b/spec/models/censor_rule_spec.rb @@ -21,5 +21,45 @@ describe CensorRule, "substituting things" do body.should == "I don't know why you say xxxxxxx" body.should_not == orig_body # be sure duplicated as expected end + + context "when regexp type" do + before do + CensorRule.delete_all + CensorRule.create(:last_edit_editor => 1, + :last_edit_comment => 'comment') + @censor_rule = CensorRule.new(:last_edit_editor => 1, + :last_edit_comment => 'comment') + @censor_rule.text = "--PRIVATE.*--PRIVATE" + @censor_rule.replacement = "--REMOVED\nHidden private info\n--REMOVED" + @censor_rule.regexp = true + end + + it "replaces with the regexp" do + body = +<<BODY +Some public information +--PRIVATE +Some private information +--PRIVATE +BODY + @censor_rule.apply_to_text!(body) + body.should == +<<BODY +Some public information +--REMOVED +Hidden private info +--REMOVED +BODY + end + + it "validates without info_request, user or public body set" do + @censor_rule.save.should be_true + end + + it "has scope for regexps" do + @censor_rule.save + CensorRule.regexps.all.should == [@censor_rule] + end + end end - + diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb index a18a4bd1d..230884c38 100644 --- a/spec/models/info_request_spec.rb +++ b/spec/models/info_request_spec.rb @@ -398,7 +398,27 @@ describe InfoRequest do it 'should return true if it is awaiting description, isn\'t the holding pen and hasn\'t had an event in 21 days' do @info_request.is_old_unclassified?.should be_true end + end + context "with regexp censor rule" do + before do + Time.stub!(:now).and_return(Time.utc(2007, 11, 9, 23, 59)) + @info_request = InfoRequest.create!(:prominence => 'normal', + :awaiting_description => true, + :title => 'title', + :public_body => public_bodies(:geraldine_public_body), + :user_id => 1) + @censor_rule = CensorRule.create(:last_edit_editor => 1, + :last_edit_comment => 'comment', + :text => 'text', + :replacement => 'replacement', + :regexp => true) + end + it "applies regexp censor rule" do + body = 'text' + @info_request.apply_censor_rules_to_text!(body) + body.should == 'replacement' + end end - + end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a7f3020c1..c11c7c5bc 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -206,3 +206,16 @@ def load_test_categories "Miscellaneous", [ "other", "Miscellaneous", "miscellaneous" ],]) end + + +# Monkeypatch applicationcontroller because the `render_to_string` +# method in the original breaks all the rspec test assertions such as +# `should render_template('foo')`. Same problem as +# http://stackoverflow.com/questions/8174415/is-it-possible-to-assert-template-or-render-template-against-the-same-partial-wi +# - a bug in either Rails or Rspec I don't have the time to fix :( + +class ApplicationController < ActionController::Base + def set_popup_banner + @popup_banner = nil + end +end |