fixes #1257
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user