Skip to content
This repository has been archived by the owner on Aug 13, 2018. It is now read-only.

Commit

Permalink
Introduce AccountMessageImporter.
Browse files Browse the repository at this point in the history
As mentioned in 623566, we don't think that the MessageImporter should
be responsible for instantiating an IMAP connection and importing
messages into the repository.
  • Loading branch information
chrisroos-and-lazyatom committed Mar 23, 2012
1 parent 6235665 commit 439b544
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 40 deletions.
11 changes: 11 additions & 0 deletions lib/account_message_importer.rb
@@ -0,0 +1,11 @@
require 'gmail_imap_client'
require 'message_repository'

class AccountMessageImporter
class << self
def import_for(email, password)
imap_client = GmailImapClient.connect(email, password)
MessageImporter.new(imap_client).import_into(MessageRepository.instance)
end
end
end
11 changes: 0 additions & 11 deletions lib/message_importer.rb
@@ -1,15 +1,4 @@
require 'gmail_imap_client'
require 'message_repository'

class MessageImporter class MessageImporter

class << self
def import_for(email, password)
imap_client = GmailImapClient.connect(email, password)
new(imap_client).import_into(MessageRepository.instance)
end
end

attr_reader :message_client attr_reader :message_client


def initialize(message_client) def initialize(message_client)
Expand Down
31 changes: 31 additions & 0 deletions test/unit/account_message_importer_test.rb
@@ -0,0 +1,31 @@
require 'test_helper'
require 'account_message_importer'

class AccountMessageImporterTest < ActiveSupport::TestCase
test 'establishes an imap connection using the given credentials' do
GmailImapClient.expects(:connect).with('dave@example.com', 'password')
MessageImporter.stubs(:new).returns(stub_everything)

AccountMessageImporter.import_for('dave@example.com', 'password')
end

test 'uses the established connection for importing' do
gmail_client = stub('gmail-client')
GmailImapClient.stubs(:connect).returns(gmail_client)
MessageImporter.expects(:new).with(gmail_client).returns(stub_everything)

AccountMessageImporter.import_for('whatever', 'whatever')
end

test 'uses the default message repository' do
GmailImapClient.stubs(:connect).returns(stub('gmail-client'))

message_repository = stub('message-repository')
importer = stub('importer')
MessageRepository.stubs(:instance).returns(message_repository)
MessageImporter.stubs(:new).returns(importer)
importer.expects(:import_into).with(message_repository)

AccountMessageImporter.import_for('whatever', 'whatever')
end
end
29 changes: 0 additions & 29 deletions test/unit/message_importer_test.rb
@@ -1,34 +1,5 @@
require 'test_helper' require 'test_helper'


class MessageImporter::WhenCoordinating < ActiveSupport::TestCase
test 'establishes an imap connection using the given credentials' do
GmailImapClient.expects(:connect).with('dave@example.com', 'password')
MessageImporter.stubs(:new).returns(stub_everything)

MessageImporter.import_for('dave@example.com', 'password')
end

test 'uses the established connection for importing' do
gmail_client = stub('gmail-client')
GmailImapClient.stubs(:connect).returns(gmail_client)

MessageImporter.expects(:new).with(gmail_client).returns(stub_everything)
MessageImporter.import_for('whatever', 'whatever')
end

test 'uses the default message repository' do
GmailImapClient.stubs(:connect).returns(stub('gmail-client'))

message_repository = stub('message-repository')
importer = stub('importer')
MessageRepository.stubs(:instance).returns(message_repository)
MessageImporter.stubs(:new).returns(importer)
importer.expects(:import_into).with(message_repository)

MessageImporter.import_for('whatever', 'whatever')
end
end

class MessageImporterTest < ActiveSupport::TestCase class MessageImporterTest < ActiveSupport::TestCase
test 'imports messages' do test 'imports messages' do
gmail_client = stub('gmail-client', inbox_messages: [:message1, :message2]) gmail_client = stub('gmail-client', inbox_messages: [:message1, :message2])
Expand Down

0 comments on commit 439b544

Please sign in to comment.