From d0ae96039273ecc0c1d06f76209484ae420431f8 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 24 Aug 2015 20:49:31 -0300 Subject: [bug] adapt MailboxIndexer to mail_store -- Issue #439 --- .../adapter/listeners/mailbox_indexer_listener.py | 14 ++++++++------ .../unit/adapter/test_mailbox_indexer_listener.py | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py index 3af4e62e..ce056a3c 100644 --- a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py +++ b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py @@ -24,23 +24,25 @@ class MailboxIndexerListener(object): @classmethod @defer.inlineCallbacks - def listen(cls, account, mailbox_name, soledad_querier): - listener = MailboxIndexerListener(mailbox_name, soledad_querier) + def listen(cls, account, mailbox_name, mail_store): + listener = MailboxIndexerListener(mailbox_name, mail_store) if listener not in (yield account.getMailbox(mailbox_name)).listeners: mbx = yield account.getMailbox(mailbox_name) mbx.addListener(listener) - def __init__(self, mailbox_name, soledad_querier): + def __init__(self, mailbox_name, mail_store): self.mailbox_name = mailbox_name - self.querier = soledad_querier + self.mail_store = mail_store + @defer.inlineCallbacks def newMessages(self, exists, recent): indexed_idents = set(self.SEARCH_ENGINE.search('tag:' + self.mailbox_name.lower(), all_mails=True)) - soledad_idents = self.querier.idents_by_mailbox(self.mailbox_name) + soledad_idents = yield self.mail_store.get_mailbox_mail_ids(self.mailbox_name) + soledad_idents = set(soledad_idents) missing_idents = soledad_idents.difference(indexed_idents) - self.SEARCH_ENGINE.index_mails(self.querier.mails(missing_idents)) + self.SEARCH_ENGINE.index_mails((yield self.mail_store.get_mails(missing_idents))) def __eq__(self, other): return other and other.mailbox_name == self.mailbox_name diff --git a/service/test/unit/adapter/test_mailbox_indexer_listener.py b/service/test/unit/adapter/test_mailbox_indexer_listener.py index 71c9cd15..d107c68a 100644 --- a/service/test/unit/adapter/test_mailbox_indexer_listener.py +++ b/service/test/unit/adapter/test_mailbox_indexer_listener.py @@ -21,7 +21,7 @@ from pixelated.adapter.listeners.mailbox_indexer_listener import MailboxIndexerL class MailboxListenerTest(unittest.TestCase): def setUp(self): - self.querier = mock() + self.mail_store = mock() self.account = mock() self.account.mailboxes = [] @@ -32,11 +32,11 @@ class MailboxListenerTest(unittest.TestCase): mailbox.listeners = set() when(mailbox).addListener = lambda x: mailbox.listeners.add(x) - self.assertNotIn(MailboxIndexerListener('INBOX', self.querier), mailbox.listeners) + self.assertNotIn(MailboxIndexerListener('INBOX', self.mail_store), mailbox.listeners) - MailboxIndexerListener.listen(self.account, 'INBOX', self.querier) + MailboxIndexerListener.listen(self.account, 'INBOX', self.mail_store) - self.assertIn(MailboxIndexerListener('INBOX', self.querier), mailbox.listeners) + self.assertIn(MailboxIndexerListener('INBOX', self.mail_store), mailbox.listeners) def test_reindex_missing_idents(self): search_engine = mock() @@ -44,11 +44,11 @@ class MailboxListenerTest(unittest.TestCase): MailboxIndexerListener.SEARCH_ENGINE = search_engine - listener = MailboxIndexerListener('INBOX', self.querier) - when(self.querier).idents_by_mailbox('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'}) - self.querier.used_arguments = [] - self.querier.mails = lambda x: self.querier.used_arguments.append(x) + listener = MailboxIndexerListener('INBOX', self.mail_store) + when(self.mail_store).get_mailbox_mail_ids('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'}) + self.mail_store.used_arguments = [] + self.mail_store.get_mails = lambda x: self.mail_store.used_arguments.append(x) listener.newMessages(10, 5) - verify(self.querier, times=1).idents_by_mailbox('INBOX') - self.assertIn({'missing_ident'}, self.querier.used_arguments) + verify(self.mail_store, times=1).get_mails('INBOX') + self.assertIn({'missing_ident'}, self.mail_store.used_arguments) -- cgit v1.2.3