fixes #1257
This commit is contained in:
@@ -10,10 +10,7 @@ module Admin
|
|||||||
def update
|
def update
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
sanitize_params!
|
sanitize_params!
|
||||||
@user.level = params[:user][:level]
|
@user.promote_to!(params[:user][:level])
|
||||||
@user.inviter_id = CurrentUser.id
|
|
||||||
TransactionLogItem.record_account_upgrade(@user)
|
|
||||||
@user.save
|
|
||||||
redirect_to edit_admin_user_path(@user), :notice => "User updated"
|
redirect_to edit_admin_user_path(@user), :notice => "User updated"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -242,8 +242,23 @@ class User < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def promote_to(level)
|
def promote_to!(new_level)
|
||||||
update_attributes({:level => level}, :as => :admin)
|
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
|
end
|
||||||
|
|
||||||
def promote_to_admin_if_first_user
|
def promote_to_admin_if_first_user
|
||||||
|
|||||||
@@ -13,6 +13,26 @@ class UserTest < ActiveSupport::TestCase
|
|||||||
CurrentUser.user = nil
|
CurrentUser.user = nil
|
||||||
CurrentUser.ip_addr = nil
|
CurrentUser.ip_addr = nil
|
||||||
end
|
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
|
context "favoriting a post" do
|
||||||
setup do
|
setup do
|
||||||
|
|||||||
Reference in New Issue
Block a user