From e915f46bf4663714c48a877e0b396d491bcc5944 Mon Sep 17 00:00:00 2001 From: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com> Date: Sat, 27 Feb 2021 09:53:46 -0500 Subject: [PATCH] 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 --- app/lib/constants/role.rb | 50 +++++++++++-------- app/models/badge_achievement.rb | 1 + .../requests/admin/badge_achievements_spec.rb | 18 +++++++ 3 files changed, 47 insertions(+), 22 deletions(-) diff --git a/app/lib/constants/role.rb b/app/lib/constants/role.rb index 7c71a04be..a57b00c8a 100644 --- a/app/lib/constants/role.rb +++ b/app/lib/constants/role.rb @@ -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 diff --git a/app/models/badge_achievement.rb b/app/models/badge_achievement.rb index a0aef90da..32d981f0a 100644 --- a/app/models/badge_achievement.rb +++ b/app/models/badge_achievement.rb @@ -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 diff --git a/spec/requests/admin/badge_achievements_spec.rb b/spec/requests/admin/badge_achievements_spec.rb index 60b56c707..e25c3637e 100644 --- a/spec/requests/admin/badge_achievements_spec.rb +++ b/spec/requests/admin/badge_achievements_spec.rb @@ -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: {