aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb5
-rw-r--r--spec/controllers/request_controller_spec.rb8
2 files changed, 10 insertions, 3 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 573649b8f..a21676f68 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -438,8 +438,9 @@ class User < ActiveRecord::Base
after_save(:purge_in_cache)
def purge_in_cache
- # XXX should only be if specific attributes have changed
- self.info_requests.each {|x| x.purge_in_cache}
+ if self.name_changed?
+ self.info_requests.each {|x| x.purge_in_cache}
+ end
end
end
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb
index 99ab4cc71..01a663bf8 100644
--- a/spec/controllers/request_controller_spec.rb
+++ b/spec/controllers/request_controller_spec.rb
@@ -156,12 +156,18 @@ describe RequestController, "when changing things that appear on the request pag
ir.public_body.save!
PurgeRequest.all().map{|x| x.model_id}.should =~ ir.public_body.info_requests.map{|x| x.id}
end
- it "should purge the downstream cache when the user details are changed" do
+ it "should purge the downstream cache when the user name is changed" do
ir = info_requests(:fancy_dog_request)
ir.user.name = "Something new"
ir.user.save!
PurgeRequest.all().map{|x| x.model_id}.should =~ ir.user.info_requests.map{|x| x.id}
end
+ it "should not purge the downstream cache when non-visible user details are changed" do
+ ir = info_requests(:fancy_dog_request)
+ ir.user.hashed_password = "some old hash"
+ ir.user.save!
+ PurgeRequest.all().count.should == 0
+ end
it "should purge the downstream cache when censor rules have changed" do
# XXX really, CensorRules should execute expiry logic as part
# of the after_save of the model. Currently this is part of