This commit is contained in:
r888888888
2014-03-05 17:33:57 -08:00
parent 093d2fc783
commit 14dd0430cb
3 changed files with 38 additions and 6 deletions

View File

@@ -10,10 +10,7 @@ module Admin
def update
@user = User.find(params[:id])
sanitize_params!
@user.level = params[:user][:level]
@user.inviter_id = CurrentUser.id
TransactionLogItem.record_account_upgrade(@user)
@user.save
@user.promote_to!(params[:user][:level])
redirect_to edit_admin_user_path(@user), :notice => "User updated"
end

View File

@@ -242,8 +242,23 @@ class User < ActiveRecord::Base
end
end
def promote_to(level)
update_attributes({:level => level}, :as => :admin)
def promote_to!(new_level)
self.level = new_level
self.inviter_id = CurrentUser.user.id
TransactionLogItem.record_account_upgrade(self)
if level > level_was
body_prefix = "Promoted"
elsif level < level_was
body_prefix = "Demoted"
else
body_prefix = ""
end
feedback.create(
:category => "neutral",
:body => "#{body_prefix} by #{inviter.name} from #{level_string(level_was)} to #{level_string(level)}"
)
save
end
def promote_to_admin_if_first_user

View File

@@ -13,6 +13,26 @@ class UserTest < ActiveSupport::TestCase
CurrentUser.user = nil
CurrentUser.ip_addr = nil
end
context "promoting a user" do
setup do
CurrentUser.user = FactoryGirl.create(:moderator_user)
end
should "create a transaction log item" do
assert_difference("TransactionLogItem.count") do
@user.promote_to!(User::Levels::GOLD)
end
end
should "create a neutral feedback" do
assert_difference("UserFeedback.count") do
@user.promote_to!(User::Levels::GOLD)
end
assert_equal("Promoted by #{CurrentUser.user.name} from Member to Gold", @user.feedback.last.body)
end
end
context "favoriting a post" do
setup do