aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Houston <robin.houston@gmail.com>2012-02-06 15:14:01 +0000
committerRobin Houston <robin.houston@gmail.com>2012-02-06 15:14:01 +0000
commit0f541e0cf80ba1135a2ae0ae34d53c7917dec23c (patch)
treed1337eacccad398ea4c41d3709515152eaf637cf
parent3b6e5a692b852a88f55b21a7210f60a6f7cfc24b (diff)
Don’t index unconfirmed users
Closes #415.
-rw-r--r--app/models/user.rb7
-rw-r--r--spec/controllers/general_controller_spec.rb16
2 files changed, 22 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 691a59e48..59a84b7aa 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -61,7 +61,8 @@ class User < ActiveRecord::Base
:values => [
[ :created_at_numeric, 1, "created_at", :number ] # for sorting
],
- :terms => [ [ :variety, 'V', "variety" ] ]
+ :terms => [ [ :variety, 'V', "variety" ] ],
+ :if => :indexed_by_search?
def created_at_numeric
# format it here as no datetime support in Xapian's value ranges
return self.created_at.strftime("%Y%m%d%H%M%S")
@@ -394,6 +395,10 @@ class User < ActiveRecord::Base
def should_be_emailed?
return (self.email_confirmed && self.email_bounced_at.nil?)
end
+
+ def indexed_by_search?
+ return self.email_confirmed
+ end
## Private instance methods
private
diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb
index 7fc019c64..81f4ed6d5 100644
--- a/spec/controllers/general_controller_spec.rb
+++ b/spec/controllers/general_controller_spec.rb
@@ -198,6 +198,22 @@ describe GeneralController, "when searching" do
assigns[:query].should be_nil
end
+ it "should not show unconfirmed users" do
+ get :search, :combined => ["unconfirmed", "users"]
+ response.should render_template('search')
+ assigns[:xapian_users].results.map{|x|x[:model]}.should == []
+ end
+
+ it "should show newly-confirmed users" do
+ u = users(:unconfirmed_user)
+ u.email_confirmed = true
+ u.save!
+ update_xapian_index
+
+ get :search, :combined => ["unconfirmed", "users"]
+ response.should render_template('search')
+ assigns[:xapian_users].results.map{|x|x[:model]}.should == [u]
+ end
end