aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Rees <gareth@mysociety.org>2015-04-22 17:40:17 +0100
committerGareth Rees <gareth@mysociety.org>2015-05-07 13:25:16 +0100
commit47fcd7ea7c9065e2727f1954be8bbffcf17e4114 (patch)
tree5476b55ef0ad014629f5caea11f74efa36c3f24d
parent8b5188e9fe748a8420b9d8ee45eedacb8dd09e48 (diff)
Don't load PublicBody when initalizing InfoRequest
Doesn't need to try to set the default law_used once it's persisted, so we save a query each time we find an InfoRequest
-rw-r--r--app/models/info_request.rb3
-rw-r--r--spec/models/info_request_spec.rb23
2 files changed, 23 insertions, 3 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 8f464e786..0ca3a1279 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1394,8 +1394,9 @@ public
# this should only happen on Model.exists?() call. It can be safely ignored.
# See http://www.tatvartha.com/2011/03/activerecordmissingattributeerror-missing-attribute-a-bug-or-a-features/
end
+
# FOI or EIR?
- if !self.public_body.nil? && self.public_body.eir_only?
+ if new_record? && public_body && public_body.eir_only?
self.law_used = 'eir'
end
end
diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb
index d18b254fb..1ead1e0bf 100644
--- a/spec/models/info_request_spec.rb
+++ b/spec/models/info_request_spec.rb
@@ -28,6 +28,26 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe InfoRequest do
+ describe :new do
+
+ it 'sets the default law used' do
+ expect(InfoRequest.new().law_used).to eq('foi')
+ end
+
+ it 'sets the default law used if a body is eir-only' do
+ body = FactoryGirl.create(:public_body, :tag_string => 'eir_only')
+ expect(body.info_requests.build.law_used).to eq('eir')
+ end
+
+ it 'does not try to set the law used for existing requests' do
+ info_request = FactoryGirl.create(:info_request)
+ body = FactoryGirl.create(:public_body, :tag_string => 'eir_only')
+ info_request.update_attributes(:public_body_id => body.id)
+ InfoRequest.any_instance.should_not_receive(:law_used=).and_call_original
+ InfoRequest.find(info_request.id)
+ end
+ end
+
describe :move_to_public_body do
context 'with no options' do
@@ -117,7 +137,6 @@ describe InfoRequest do
end
end
-
end
describe 'when validating' do
@@ -134,7 +153,7 @@ describe InfoRequest do
info_request.errors[:title].should be_empty
end
- it 'should not accept a summary with no ascii or unicode characters' do
+ it 'should not accept a summary with no ascii or unicode characters' do
info_request = InfoRequest.new(:title => '55555')
info_request.valid?
info_request.errors[:title].should_not be_empty