DEV: Use method instead of constant for discobot badge names
This change refactors the code a bit so that a plugin could easily replace which badge is awarded when completing the discobot new user tutorial and advanced tutorial. By adding a static method and putting the BADGE_NAME constant inside of that method we can simply call that method now instead of the constant. A plugin could then `class_eval` that method and replace it with whatever badge name they choose. This is way cleaner than having the plugin change the frozen constant! eeek.
This commit is contained in:
parent
3cac60f07c
commit
80a80ef2bd
|
@ -5,11 +5,11 @@ module Jobs
|
|||
class GrantBadges < ::Jobs::Onceoff
|
||||
def execute_onceoff(args)
|
||||
new_user_track_badge = Badge.find_by(
|
||||
name: ::DiscourseNarrativeBot::NewUserNarrative::BADGE_NAME
|
||||
name: ::DiscourseNarrativeBot::NewUserNarrative.badge_name
|
||||
)
|
||||
|
||||
advanced_user_track_badge = Badge.find_by(
|
||||
name: ::DiscourseNarrativeBot::AdvancedUserNarrative::BADGE_NAME
|
||||
name: ::DiscourseNarrativeBot::AdvancedUserNarrative.badge_name
|
||||
)
|
||||
|
||||
PluginStoreRow.where(
|
||||
|
|
|
@ -98,6 +98,10 @@ module DiscourseNarrativeBot
|
|||
}
|
||||
}
|
||||
|
||||
def self.badge_name
|
||||
BADGE_NAME
|
||||
end
|
||||
|
||||
def self.reset_trigger
|
||||
I18n.t('discourse_narrative_bot.advanced_user_narrative.reset_trigger')
|
||||
end
|
||||
|
|
|
@ -74,7 +74,7 @@ module DiscourseNarrativeBot
|
|||
cancel_timeout_job(user)
|
||||
|
||||
BadgeGranter.grant(
|
||||
Badge.find_by(name: self.class::BADGE_NAME),
|
||||
Badge.find_by(name: self.class.badge_name),
|
||||
user
|
||||
)
|
||||
|
||||
|
|
|
@ -117,6 +117,10 @@ module DiscourseNarrativeBot
|
|||
}
|
||||
}
|
||||
|
||||
def self.badge_name
|
||||
BADGE_NAME
|
||||
end
|
||||
|
||||
def self.search_answer
|
||||
':herb:'
|
||||
end
|
||||
|
|
|
@ -725,7 +725,7 @@ RSpec.describe DiscourseNarrativeBot::AdvancedUserNarrative do
|
|||
"topic_id" => topic.id,
|
||||
"track" => described_class.to_s)
|
||||
|
||||
expect(user.badges.where(name: DiscourseNarrativeBot::AdvancedUserNarrative::BADGE_NAME).exists?)
|
||||
expect(user.badges.where(name: DiscourseNarrativeBot::AdvancedUserNarrative.badge_name).exists?)
|
||||
.to eq(true)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1007,7 +1007,7 @@ describe DiscourseNarrativeBot::NewUserNarrative do
|
|||
)
|
||||
|
||||
expect(user.badges.where(
|
||||
name: DiscourseNarrativeBot::NewUserNarrative::BADGE_NAME).exists?
|
||||
name: DiscourseNarrativeBot::NewUserNarrative.badge_name).exists?
|
||||
).to eq(true)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -319,7 +319,7 @@ describe DiscourseNarrativeBot::TrackSelector do
|
|||
)
|
||||
|
||||
BadgeGranter.grant(
|
||||
Badge.find_by(name: DiscourseNarrativeBot::NewUserNarrative::BADGE_NAME),
|
||||
Badge.find_by(name: DiscourseNarrativeBot::NewUserNarrative.badge_name),
|
||||
user
|
||||
)
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@ RSpec.describe Jobs::DiscourseNarrativeBot::GrantBadges do
|
|||
expect(user.badges.count).to eq(2)
|
||||
|
||||
expect(user.badges.map(&:name)).to contain_exactly(
|
||||
DiscourseNarrativeBot::NewUserNarrative::BADGE_NAME,
|
||||
DiscourseNarrativeBot::AdvancedUserNarrative::BADGE_NAME,
|
||||
DiscourseNarrativeBot::NewUserNarrative.badge_name,
|
||||
DiscourseNarrativeBot::AdvancedUserNarrative.badge_name,
|
||||
)
|
||||
|
||||
expect(other_user.badges.count).to eq(0)
|
||||
|
|
Loading…
Reference in New Issue