diff --git a/lib/mailbox_reader.rb b/lib/mailbox_reader.rb index 0ed7842f6..1f1bed60f 100644 --- a/lib/mailbox_reader.rb +++ b/lib/mailbox_reader.rb @@ -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 diff --git a/spec/lib/mailbox_reader_spec.rb b/spec/lib/mailbox_reader_spec.rb index e44eb78e6..fe45fd9a5 100644 --- a/spec/lib/mailbox_reader_spec.rb +++ b/spec/lib/mailbox_reader_spec.rb @@ -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 diff --git a/vendor/assets/javascripts/jquery.tools.min.js b/vendor/assets/javascripts/jquery.tools.min.js index a5e37c9ef..a09e0b3e7 100644 --- a/vendor/assets/javascripts/jquery.tools.min.js +++ b/vendor/assets/javascripts/jquery.tools.min.js @@ -10,7 +10,7 @@ * tooltip/tooltip.js * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. - * This file has been altered by CycleScape in + * This file has been altered by CycleScape in 5d51955 * * http://flowplayer.org/tools/ *