From 537be266903ad0463490be8b46c0d70e56bf0dc1 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Wed, 29 May 2013 17:24:51 -0700 Subject: [PATCH] when deleting users, make the favorites removal asynchronoous --- app/logical/user_deletion.rb | 11 ++++++++--- test/unit/user_deletion_test.rb | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/logical/user_deletion.rb b/app/logical/user_deletion.rb index f32093505..9dfffa4b1 100644 --- a/app/logical/user_deletion.rb +++ b/app/logical/user_deletion.rb @@ -3,6 +3,13 @@ class UserDeletion attr_reader :user, :password + def self.remove_favorites_for(user_name, user_id) + user = User.find(user_id) + Post.tag_match("fav:#{user_name}").find_each do |post| + Favorite.remove(post, user) + end + end + def initialize(user, password) @user = user @password = password @@ -49,9 +56,7 @@ private end def remove_favorites - Post.tag_match("fav:#{user.name}").find_each do |post| - Favorite.remove(post, user) - end + UserDeletion.delay.remove_favorites_for(user.name, user.id) end def rename diff --git a/test/unit/user_deletion_test.rb b/test/unit/user_deletion_test.rb index 3fd9b2bda..1a6db0811 100644 --- a/test/unit/user_deletion_test.rb +++ b/test/unit/user_deletion_test.rb @@ -4,6 +4,7 @@ class UserDeletionTest < ActiveSupport::TestCase context "an invalid user deletion" do context "for an invalid password" do setup do + Delayed::Worker.delay_jobs = false @user = FactoryGirl.create(:user) CurrentUser.user = @user CurrentUser.ip_addr = "127.0.0.1" @@ -19,6 +20,7 @@ class UserDeletionTest < ActiveSupport::TestCase context "for an admin" do setup do + Delayed::Worker.delay_jobs = false @user = FactoryGirl.create(:admin_user) CurrentUser.user = @user CurrentUser.ip_addr = "127.0.0.1" @@ -35,6 +37,8 @@ class UserDeletionTest < ActiveSupport::TestCase context "a valid user deletion" do setup do + Delayed::Worker.delay_jobs = false + @user = FactoryGirl.create(:user) CurrentUser.user = @user CurrentUser.ip_addr = "127.0.0.1"