Skip to content

Commit

Permalink
Merge pull request #364 from cyclestreets/handle_unprocessable_emails
Browse files Browse the repository at this point in the history
ensure even erroneous processed mail is marked seen
  • Loading branch information
nikolai-b committed May 3, 2015
2 parents 9056658 + 9f41902 commit db77ac7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 10 deletions.
19 changes: 11 additions & 8 deletions lib/mailbox_reader.rb
Expand Up @@ -4,14 +4,17 @@ class MailboxReader < MailboxProcessor
def run
begin
fetch_message_ids(config[:mailbox]).each do |mid|
# Fetch message from IMAP server
message = fetch_raw_message(mid)
# Save to database
ar_message = save_message(message)
# Mark message as read in IMAP mailbox
mark_as_seen(mid)
# Send to the mail processor
enqueue(ar_message)
begin
# Fetch message from IMAP server
message = fetch_raw_message(mid)
# Save to database
ar_message = save_message(message)
# Send to the mail processor
enqueue(ar_message)
ensure
# Mark message as read in IMAP mailbox
mark_as_seen(mid)
end
end
ensure
disconnect
Expand Down
24 changes: 23 additions & 1 deletion spec/lib/mailbox_reader_spec.rb
Expand Up @@ -9,10 +9,32 @@
end

let(:imap) { double('IMAP connection') }
let(:message) { File.read(raw_email_path) }

describe '#run' do
subject { MailboxReader.new(config) }
before do
allow(subject).to receive(:fetch_message_ids).and_return([12345])
allow(subject).to receive(:fetch_raw_message).with(12345).and_return(message)
allow(subject).to receive(:save_message).with(message).and_raise('cannot save')
end

it 'ensures mail with errors is marked as read' do
expect(subject).to receive(:mark_as_seen).with(12345).once

expect{ subject.run }.to raise_error
end

it 'ensures connections are disconnected' do
expect(subject).to receive(:disconnect).once

expect{ subject.run }.to raise_error
end

end

describe 'saving messages' do
subject { MailboxReader.new(config) }
let(:message) { File.read(raw_email_path) }

describe '#save_message' do
it 'should create a saved record from the raw message' do
Expand Down
2 changes: 1 addition & 1 deletion vendor/assets/javascripts/jquery.tools.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit db77ac7

Please sign in to comment.