mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Log badge grant/revoke to the staff actions log.
This commit is contained in:
@@ -36,6 +36,7 @@ describe UserBadgesController do
|
||||
it 'grants badges from staff' do
|
||||
admin = Fabricate(:admin)
|
||||
log_in_user admin
|
||||
StaffActionLogger.any_instance.expects(:log_badge_grant).once
|
||||
xhr :post, :create, badge_id: badge.id, username: user.username
|
||||
response.status.should == 200
|
||||
user_badge = UserBadge.where(user: user, badge: badge).first
|
||||
@@ -51,6 +52,7 @@ describe UserBadgesController do
|
||||
|
||||
it 'grants badges from master api calls' do
|
||||
api_key = Fabricate(:api_key)
|
||||
StaffActionLogger.any_instance.expects(:log_badge_grant).never
|
||||
xhr :post, :create, badge_id: badge.id, username: user.username, api_key: api_key.key
|
||||
response.status.should == 200
|
||||
user_badge = UserBadge.where(user: user, badge: badge).first
|
||||
@@ -71,6 +73,7 @@ describe UserBadgesController do
|
||||
|
||||
it 'revokes the badge' do
|
||||
log_in :admin
|
||||
StaffActionLogger.any_instance.expects(:log_badge_revoke).once
|
||||
xhr :delete, :destroy, id: @user_badge.id
|
||||
response.status.should == 200
|
||||
UserBadge.where(id: @user_badge.id).first.should be_nil
|
||||
|
||||
@@ -24,11 +24,13 @@ describe BadgeGranter do
|
||||
|
||||
it 'sets granted_by if the option is present' do
|
||||
admin = Fabricate(:admin)
|
||||
StaffActionLogger.any_instance.expects(:log_badge_grant).once
|
||||
user_badge = BadgeGranter.grant(badge, user, granted_by: admin)
|
||||
user_badge.granted_by.should eq(admin)
|
||||
end
|
||||
|
||||
it 'defaults granted_by to the system user' do
|
||||
StaffActionLogger.any_instance.expects(:log_badge_grant).never
|
||||
user_badge = BadgeGranter.grant(badge, user)
|
||||
user_badge.granted_by_id.should eq(Discourse.system_user.id)
|
||||
end
|
||||
@@ -47,11 +49,13 @@ describe BadgeGranter do
|
||||
|
||||
describe 'revoke' do
|
||||
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let!(:user_badge) { BadgeGranter.grant(badge, user) }
|
||||
|
||||
it 'revokes the badge and decrements grant_count' do
|
||||
badge.reload.grant_count.should eq(1)
|
||||
BadgeGranter.revoke(user_badge)
|
||||
StaffActionLogger.any_instance.expects(:log_badge_revoke).with(user_badge)
|
||||
BadgeGranter.revoke(user_badge, revoked_by: admin)
|
||||
UserBadge.where(user: user, badge: badge).first.should_not be_present
|
||||
badge.reload.grant_count.should eq(0)
|
||||
end
|
||||
|
||||
@@ -150,4 +150,38 @@ describe StaffActionLogger do
|
||||
log_record.target_user.should == user
|
||||
end
|
||||
end
|
||||
|
||||
describe "log_badge_grant" do
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:badge) { Fabricate(:badge) }
|
||||
let(:user_badge) { BadgeGranter.grant(badge, user) }
|
||||
|
||||
it "raises an error when argument is missing" do
|
||||
expect { logger.log_badge_grant(nil) }.to raise_error(Discourse::InvalidParameters)
|
||||
end
|
||||
|
||||
it "creates a new UserHistory record" do
|
||||
log_record = logger.log_badge_grant(user_badge)
|
||||
log_record.should be_valid
|
||||
log_record.target_user.should == user
|
||||
log_record.details.should == badge.name
|
||||
end
|
||||
end
|
||||
|
||||
describe "log_badge_revoke" do
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:badge) { Fabricate(:badge) }
|
||||
let(:user_badge) { BadgeGranter.grant(badge, user) }
|
||||
|
||||
it "raises an error when argument is missing" do
|
||||
expect { logger.log_badge_revoke(nil) }.to raise_error(Discourse::InvalidParameters)
|
||||
end
|
||||
|
||||
it "creates a new UserHistory record" do
|
||||
log_record = logger.log_badge_revoke(user_badge)
|
||||
log_record.should be_valid
|
||||
log_record.target_user.should == user
|
||||
log_record.details.should == badge.name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user