def test_load_mails_adds_mails(self):
        # given
        mail_root = pkg_resources.resource_filename('test.unit.fixtures',
                                                    'mailset')
        firstMailDeferred = defer.succeed(MagicMock())
        secondMailDeferred = defer.succeed(MagicMock())
        self.mail_store.add_mail.side_effect = [
            firstMailDeferred, secondMailDeferred
        ]
        self.mail_store.add_mailbox.return_value = defer.succeed(None)

        # when
        d = load_mails(self.args, [mail_root])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mail_store.add_mail.called)
            self.mail_store.add_mail.assert_any_call(
                'INBOX',
                self._mail_content(join(mail_root, 'new', 'mbox00000000')))
            self.mail_store.add_mail.assert_any_call(
                'INBOX',
                self._mail_content(join(mail_root, 'new', 'mbox00000001')))
            # TODO Should we check for flags?

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        return d
    def test_load_mails_adds_mails(self):
        # given
        mail_root = pkg_resources.resource_filename('test.unit.fixtures', 'mailset')
        firstMailDeferred = defer.succeed(None)
        secondMailDeferred = defer.succeed(None)
        self.mail_store.add_mail.side_effect = [firstMailDeferred, secondMailDeferred]
        self.mail_store.add_mailbox.return_value = defer.succeed(None)

        # when
        d = load_mails(self.args, [mail_root])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mail_store.add_mail.called)
            self.mail_store.add_mail.assert_any_call('INBOX', self._mail_content(join(mail_root, 'new', 'mbox00000000')))
            self.mail_store.add_mail.assert_any_call('INBOX', self._mail_content(join(mail_root, 'new', 'mbox00000001')))
            # TODO Should we check for flags?

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        return d
    def test_load_mails_adds_mails(self):
        # given
        mail_root = join(dirname(__file__), '..', 'fixtures', 'mailset')
        firstMailDeferred = defer.Deferred()
        secondMailDeferred = defer.Deferred()
        self.mailbox.addMessage.side_effect = [firstMailDeferred, secondMailDeferred]

        # when
        d = load_mails(self.args, [mail_root])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mailbox.addMessage.called)
            self.mailbox.addMessage.assert_any_call(self._mail_content(join(mail_root, 'new', 'mbox00000000')), flags=(WithMsgFields.RECENT_FLAG,), notify_on_disk=False)
            self.mailbox.addMessage.assert_any_call(self._mail_content(join(mail_root, 'new', 'mbox00000001')), flags=(WithMsgFields.RECENT_FLAG,), notify_on_disk=False)

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        # trigger callbacks for both mails
        reactor.callLater(0, firstMailDeferred.callback, None)
        reactor.callLater(0, secondMailDeferred.callback, None)

        return d
    def test_load_mails_adds_mails(self):
        mail_root = join(dirname(__file__), '..', 'fixtures', 'mailset')

        foo = load_mails(self.args, [mail_root])

        self.assertTrue(self.mailbox.addMessage.called)
        self.mailbox.addMessage.assert_any_call(self._mail_content(join(mail_root, 'mbox00000000')), flags=("\\RECENT",), notify_on_disk=False)
        self.mailbox.addMessage.assert_any_call(self._mail_content(join(mail_root, 'mbox00000001')), flags=("\\RECENT",), notify_on_disk=False)
    def test_load_mails_supports_mbox(self):
        # given
        mbox_file = pkg_resources.resource_filename('test.unit.fixtures', 'mbox')

        d = load_mails(self.args, [mbox_file])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mail_store.add_mail.called)
            self.mail_store.add_mail.assert_any_call('INBOX', self._mail_content(mbox_file))

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        return d
    def test_load_mails_supports_mbox(self):
        # given
        mbox_file = pkg_resources.resource_filename('test.unit.fixtures',
                                                    'mbox')

        d = load_mails(self.args, [mbox_file])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mail_store.add_mail.called)
            self.mail_store.add_mail.assert_any_call(
                'INBOX', self._mail_content(mbox_file))

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        return d
    def test_load_mails_adds_mails(self):
        # given
        mail_root = join(dirname(__file__), '..', 'fixtures', 'mailset')
        firstMailDeferred = defer.Deferred()
        secondMailDeferred = defer.Deferred()
        self.mailbox.addMessage.side_effect = [
            firstMailDeferred, secondMailDeferred
        ]

        # when
        d = load_mails(self.args, [mail_root])

        # then
        def assert_mails_added(_):
            self.assertTrue(self.mailbox.addMessage.called)
            self.mailbox.addMessage.assert_any_call(
                self._mail_content(join(mail_root, 'new', 'mbox00000000')),
                flags=(WithMsgFields.RECENT_FLAG, ),
                notify_on_disk=False)
            self.mailbox.addMessage.assert_any_call(
                self._mail_content(join(mail_root, 'new', 'mbox00000001')),
                flags=(WithMsgFields.RECENT_FLAG, ),
                notify_on_disk=False)

        def error_callack(err):
            print err
            self.assertTrue(False)

        d.addCallback(assert_mails_added)
        d.addErrback(error_callack)

        # trigger callbacks for both mails
        reactor.callLater(0, firstMailDeferred.callback, None)
        reactor.callLater(0, secondMailDeferred.callback, None)

        return d
    def test_load_mails_empty_path_list(self):
        load_mails(self.args, [])

        self.assertFalse(self.mailbox.called)
    def test_load_mails_empty_path_list(self):
        load_mails(self.args, [])

        self.assertFalse(self.mail_store.add_mailbox.called)