Merged in VRFS-5144-deleted_user_improvements (pull request #15)
exclude deleted users from search Approved-by: Seth Call
This commit is contained in:
commit
3a248df971
|
|
@ -78,13 +78,13 @@ module JamRuby
|
||||||
Band.where(nil)
|
Band.where(nil)
|
||||||
when 'fans'
|
when 'fans'
|
||||||
@search_type = :fans
|
@search_type = :fans
|
||||||
User.fans
|
User.fans.not_deleted
|
||||||
else
|
else
|
||||||
@search_type = :musicians
|
@search_type = :musicians
|
||||||
User.musicians
|
User.musicians.not_deleted
|
||||||
end
|
end
|
||||||
@results = rel.where("(name_tsv @@ to_tsquery('jamenglish', ?))", tsquery).limit(10)
|
|
||||||
|
|
||||||
|
@results = rel.where("(name_tsv @@ to_tsquery('jamenglish', ?))", tsquery).limit(10)
|
||||||
@results = Search.scope_schools_together(@results, user)
|
@results = Search.scope_schools_together(@results, user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -230,7 +230,7 @@ module JamRuby
|
||||||
# remote_ip - defunct!
|
# remote_ip - defunct!
|
||||||
def musician_filter(params={}, user=nil)
|
def musician_filter(params={}, user=nil)
|
||||||
|
|
||||||
rel = User.musicians # not musicians_geocoded on purpose; we allow 'unknowns' to surface in the search page
|
rel = User.musicians.not_deleted # not musicians_geocoded on purpose; we allow 'unknowns' to surface in the search page
|
||||||
rel = rel.select('users.*')
|
rel = rel.select('users.*')
|
||||||
rel = rel.group('users.id')
|
rel = rel.group('users.id')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -304,6 +304,7 @@ module JamRuby
|
||||||
scope :musicians_geocoded, -> { musicians.geocoded_users }
|
scope :musicians_geocoded, -> { musicians.geocoded_users }
|
||||||
scope :email_opt_in, -> { where(:subscribe_email => true) }
|
scope :email_opt_in, -> { where(:subscribe_email => true) }
|
||||||
scope :came_through_amazon, -> { joins(:posa_cards).where('posa_cards.lesson_package_type_id in (?)', LessonPackageType::AMAZON_PACKAGES + LessonPackageType::LESSON_PACKAGE_TYPES)}
|
scope :came_through_amazon, -> { joins(:posa_cards).where('posa_cards.lesson_package_type_id in (?)', LessonPackageType::AMAZON_PACKAGES + LessonPackageType::LESSON_PACKAGE_TYPES)}
|
||||||
|
scope :not_deleted, ->{ where(deleted: false) }
|
||||||
|
|
||||||
def after_save
|
def after_save
|
||||||
if school_interest && !school_interest_was
|
if school_interest && !school_interest_was
|
||||||
|
|
@ -1987,9 +1988,8 @@ module JamRuby
|
||||||
def permanently_delete
|
def permanently_delete
|
||||||
original_email = self.email
|
original_email = self.email
|
||||||
|
|
||||||
AdminMailer.ugly({to: original_email, cc: 'support@jamkazam.com', subject:'Your account has been deleted!', body: "This will be the last email you receive from JamKazam.\n\nRegards,\nTeam JamKazam"}).deliver_now
|
AdminMailer.ugly({to: original_email, cc: APP_CONFIG.email_support_alias, subject:'Your account has been deleted!', body: "This will be the last email you receive from JamKazam.\n\nRegards,\nTeam JamKazam"}).deliver_now
|
||||||
|
User.where(id: self.id).update_all(encrypted_password: SecureRandom.uuid, email: "deleted+#{SecureRandom.uuid}@jamkazam.com", subscribe_email: false, remember_token: SecureRandom.uuid, deleted: true, first_name: "deleted", last_name: "deleted")
|
||||||
User.where(id: self.id).update_all(encrypted_password: SecureRandom.uuid, email: "deleted+#{SecureRandom.uuid}@jamkazam.com", subscribe_email: false, remember_token: SecureRandom.uuid, deleted: true)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_avatar(original_fpfile, cropped_fpfile, cropped_large_fpfile, crop_selection, aws_bucket)
|
def update_avatar(original_fpfile, cropped_fpfile, cropped_large_fpfile, crop_selection, aws_bucket)
|
||||||
|
|
|
||||||
|
|
@ -1129,6 +1129,23 @@ describe User do
|
||||||
user.remind_take_lesson_at.should_not be_nil
|
user.remind_take_lesson_at.should_not be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "permanently_delete" do
|
||||||
|
let(:user) {FactoryGirl.create(:user)}
|
||||||
|
before(:each) {
|
||||||
|
UserMailer.deliveries.clear
|
||||||
|
}
|
||||||
|
|
||||||
|
it "works" do
|
||||||
|
user.permanently_delete
|
||||||
|
expect(user.reload.deleted).to eq(true)
|
||||||
|
expect(user.reload.first_name).to eq("deleted")
|
||||||
|
expect(user.reload.last_name).to eq("deleted")
|
||||||
|
expect(UserMailer.deliveries.size).to eq(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
describe "update avatar" do
|
describe "update avatar" do
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ describe "Musician Search API", :type => :api do
|
||||||
Score.connection.execute('delete from current_network_scores').check
|
Score.connection.execute('delete from current_network_scores').check
|
||||||
|
|
||||||
@user = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
@user = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
||||||
@conn = FactoryGirl.create(:connection, user_id: @user.id, locidispid: 1)
|
@conn = FactoryGirl.create(:connection, user_id: @user.id, locidispid: 1, addr: '1')
|
||||||
|
|
||||||
@user1 = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
@user1 = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
||||||
@user2 = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
@user2 = FactoryGirl.create(:user, last_jam_locidispid: 1)
|
||||||
|
|
@ -67,6 +67,15 @@ describe "Musician Search API", :type => :api do
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'exclude deleted' do
|
||||||
|
it "exclude deleted musicians" do
|
||||||
|
@user1.permanently_delete
|
||||||
|
get_query
|
||||||
|
good_response
|
||||||
|
expect(json['musicians'].count).to be [Search::M_PER_PAGE, User.musicians_geocoded.count - 1].min
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'instrument filtering' do
|
context 'instrument filtering' do
|
||||||
|
|
||||||
it "gets musicians for default instrument" do
|
it "gets musicians for default instrument" do
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ describe "Search API", :type => :api do
|
||||||
}
|
}
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
|
User.delete_all
|
||||||
post '/sessions', "session[email]" => user.email, "session[password]" => user.password
|
post '/sessions', "session[email]" => user.email, "session[password]" => user.password
|
||||||
rack_mock_session.cookie_jar["remember_token"].should == user.remember_token
|
rack_mock_session.cookie_jar["remember_token"].should == user.remember_token
|
||||||
end
|
end
|
||||||
|
|
@ -45,5 +46,36 @@ describe "Search API", :type => :api do
|
||||||
bands.should include(@band.id)
|
bands.should include(@band.id)
|
||||||
bands.should include(@band2.id)
|
bands.should include(@band2.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "excludes forever deleted musicians" do
|
||||||
|
@musician1 = FactoryGirl.create(:user, first_name: "Peach Peach", last_name: "Grovery", email: "user@example.com", musician: true)
|
||||||
|
@musician2 = FactoryGirl.create(:user, first_name: "Peach Peach", last_name: "Grovery", email: "user1@example.com", musician: true)
|
||||||
|
@musician1.permanently_delete
|
||||||
|
get '/api/search.json?query=peach&search_text_type=musicians'
|
||||||
|
last_response.status.should == 200
|
||||||
|
response = JSON.parse(last_response.body)
|
||||||
|
response["musicians"].length.should == 1
|
||||||
|
|
||||||
|
get '/api/search.json?query=deleted&search_text_type=musicians'
|
||||||
|
last_response.status.should == 200
|
||||||
|
response = JSON.parse(last_response.body)
|
||||||
|
response["musicians"].length.should == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it "excludes forever deleted fans" do
|
||||||
|
@fan1 = FactoryGirl.create(:user, first_name: "Peach", last_name: "Nothing", email: "user@example.com", musician: false)
|
||||||
|
@fan2 = FactoryGirl.create(:user, first_name: "Peach Peach", last_name: "Grovery", email: "user1@example.com", musician: false)
|
||||||
|
@fan1.permanently_delete
|
||||||
|
get '/api/search.json?query=peach&search_text_type=fans'
|
||||||
|
last_response.status.should == 200
|
||||||
|
response = JSON.parse(last_response.body)
|
||||||
|
response["fans"].length.should == 1
|
||||||
|
|
||||||
|
get '/api/search.json?query=deleted&search_text_type=fans'
|
||||||
|
last_response.status.should == 200
|
||||||
|
response = JSON.parse(last_response.body)
|
||||||
|
response["fans"].length.should == 0
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue