Resourcify Badge Achievements (#12832)

* Resourcify badge achievements

* Add test for single resource admin badge achievements

* Add badge and badge achievement roles

* Alphabetize (mostly) and cleanup syntax for easier writing

* Use quotes instead of %w and not outsmart myself :(

* alpha oops
This commit is contained in:
Andy Zhao 2021-02-27 09:53:46 -05:00 committed by GitHub
parent 7fa46683aa
commit e915f46bf4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 22 deletions

View file

@ -1,27 +1,33 @@
module Constants
module Role
BASE_ROLES = ["Warn",
"Comment Suspend",
"Suspend",
"Regular Member",
"Trusted",
"Pro"].freeze
BASE_ROLES = [
"Warn",
"Comment Suspend",
"Suspend",
"Regular Member",
"Trusted",
"Pro",
].freeze
SPECIAL_ROLES = ["Admin",
"Super Admin",
"Tech Admin",
"Resource Admin: Article",
"Resource Admin: Comment",
"Resource Admin: BufferUpdate",
"Resource Admin: ChatChannel",
"Resource Admin: Page",
"Resource Admin: FeedbackMessage",
"Resource Admin: Config",
"Resource Admin: Broadcast",
"Resource Admin: HtmlVariant",
"Resource Admin: DisplayAd",
"Resource Admin: ListingCategory",
"Resource Admin: Tag",
"Resource Admin: DataUpdateScript"].freeze
SPECIAL_ROLES = [
"Admin",
"Tech Admin",
"Super Admin",
"Resource Admin: Article",
"Resource Admin: Badge",
"Resource Admin: BadgeAchievement",
"Resource Admin: Broadcast",
"Resource Admin: BufferUpdate",
"Resource Admin: ChatChannel",
"Resource Admin: Comment",
"Resource Admin: Config",
"Resource Admin: DisplayAd",
"Resource Admin: DataUpdateScript",
"Resource Admin: FeedbackMessage",
"Resource Admin: HtmlVariant",
"Resource Admin: ListingCategory",
"Resource Admin: Page",
"Resource Admin: Tag",
].freeze
end
end

View file

@ -1,6 +1,7 @@
class BadgeAchievement < ApplicationRecord
CONTEXT_MESSAGE_ALLOWED_TAGS = %w[strong em i b u a code].freeze
CONTEXT_MESSAGE_ALLOWED_ATTRIBUTES = %w[href name].freeze
resourcify
belongs_to :user
belongs_to :badge

View file

@ -30,6 +30,24 @@ RSpec.describe "/admin/badges", type: :request do
allow(BadgeAchievements::BadgeAwardWorker).to receive(:perform_async)
end
context "when the user is a single resource admin" do
it "awards the badge" do
user.add_role(:single_resource_admin, BadgeAchievement)
sign_in user
allow(BadgeAchievements::BadgeAwardWorker).to receive(:perform_async)
post admin_badge_achievements_award_badges_path, params: {
badge: badge.slug,
usernames: usernames_string,
message_markdown: "you got a badge nice one"
}
expect(BadgeAchievements::BadgeAwardWorker).to have_received(:perform_async).with(
usernames_array, badge.slug, "you got a badge nice one"
)
expect(request.flash[:success]).to include("Badges are being rewarded. The task will finish shortly.")
end
end
it "awards badges" do
allow(BadgeAchievements::BadgeAwardWorker).to receive(:perform_async)
post admin_badge_achievements_award_badges_path, params: {