FIX: remove memoization on class method used in a job

This commit is contained in:
Régis Hanol 2017-05-22 23:35:41 +02:00
parent 4e8beda332
commit 9dddb81cf6
2 changed files with 40 additions and 14 deletions

View File

@ -461,17 +461,16 @@ module Email
true
end
def self.reply_by_email_address_regex
@reply_by_email_address_regex ||= begin
reply_addresses = [
SiteSetting.reply_by_email_address,
*(SiteSetting.alternative_reply_by_email_addresses.presence || "").split("|")
]
escaped_reply_addresses = reply_addresses.select(&:present?)
.map { |a| Regexp.escape(a) }
.map { |a| a.gsub(Regexp.escape("%{reply_key}"), "(\\h{32})") }
Regexp.new(escaped_reply_addresses.join("|"))
end
def self.reply_by_email_address_regex(extract_reply_key=true)
reply_addresses = [SiteSetting.reply_by_email_address]
reply_addresses << (SiteSetting.alternative_reply_by_email_addresses.presence || "").split("|")
reply_addresses.flatten!
reply_addresses.select!(&:present?)
reply_addresses.map! { |a| Regexp.escape(a) }
reply_addresses.map! { |a| a.gsub(Regexp.escape("%{reply_key}"), "(\\h{32})") }
/#{reply_addresses.join("|")}/
end
def group_incoming_emails_regex
@ -529,9 +528,7 @@ module Email
end
def post_action_for(body)
if likes.include?(body.strip.downcase)
PostActionType.types[:like]
end
PostActionType.types[:like] if likes.include?(body.strip.downcase)
end
def create_topic(options={})

View File

@ -526,4 +526,33 @@ describe Email::Receiver do
end
context "#reply_by_email_address_regex" do
before do
SiteSetting.reply_by_email_address = nil
SiteSetting.alternative_reply_by_email_addresses = nil
end
it "is empty by default" do
expect(Email::Receiver.reply_by_email_address_regex).to eq(//)
end
it "uses 'reply_by_email_address' site setting" do
SiteSetting.reply_by_email_address = "foo+%{reply_key}@bar.com"
expect(Email::Receiver.reply_by_email_address_regex).to eq(/foo\+(\h{32})@bar\.com/)
end
it "uses 'alternative_reply_by_email_addresses' site setting" do
SiteSetting.alternative_reply_by_email_addresses = "alt.foo+%{reply_key}@bar.com"
expect(Email::Receiver.reply_by_email_address_regex).to eq(/alt\.foo\+(\h{32})@bar\.com/)
end
it "combines both 'reply_by_email' settings" do
SiteSetting.reply_by_email_address = "foo+%{reply_key}@bar.com"
SiteSetting.alternative_reply_by_email_addresses = "alt.foo+%{reply_key}@bar.com"
expect(Email::Receiver.reply_by_email_address_regex).to eq(/foo\+(\h{32})@bar\.com|alt\.foo\+(\h{32})@bar\.com/)
end
end
end