SPEC: add spec to ensure discobot works in French
PERF: memoize cooked triggers
Follow-up to 3c31884b
This commit is contained in:
parent
c16ad39f8e
commit
d234e0f922
|
@ -222,9 +222,15 @@ module DiscourseNarrativeBot
|
|||
end
|
||||
end
|
||||
|
||||
@@cooked_triggers = {}
|
||||
|
||||
def cook(trigger)
|
||||
@@cooked_triggers[trigger] ||= PrettyText.cook("@#{self.discobot_username} #{trigger}")
|
||||
end
|
||||
|
||||
def match_trigger?(trigger)
|
||||
# we remove the leading <p> to allow for trigger to be at the end of a paragraph
|
||||
cooked_trigger = PrettyText.cook("@#{self.discobot_username} #{trigger}")[3..-1]
|
||||
cooked_trigger = cook(trigger)[3..-1]
|
||||
regexp = Regexp.new(cooked_trigger, 'i')
|
||||
match = @post.cooked.match(regexp)
|
||||
|
||||
|
|
|
@ -416,6 +416,15 @@ describe DiscourseNarrativeBot::TrackSelector do
|
|||
expect(new_post.raw).to eq(random_mention_reply)
|
||||
end
|
||||
|
||||
it 'works with french locale' do
|
||||
I18n.with_locale("fr") do
|
||||
post.update!(raw: "@discobot afficher l'aide")
|
||||
described_class.new(:reply, user, post_id: post.id).select
|
||||
# gsub'ing to ensure non-breaking whitespaces matches regular whitespaces
|
||||
expect(Post.last.raw.gsub(/[[:space:]]+/, " ")).to eq(help_message.gsub(/[[:space:]]+/, " "))
|
||||
end
|
||||
end
|
||||
|
||||
it 'should not rate limit help message' do
|
||||
post.update!(raw: '@discobot')
|
||||
other_post = Fabricate(:post, raw: 'discobot', topic: post.topic)
|
||||
|
|
Loading…
Reference in New Issue