Skip to content

Commit

Permalink
Replace doctests with unit tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
tseaver committed Dec 21, 2014
1 parent 51b8442 commit ab78cb0
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 53 deletions.
88 changes: 42 additions & 46 deletions src/zope/sendmail/tests/test_delivery.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@
Simple implementation of the MailDelivery, Mailers and MailEvents.
"""
from __future__ import print_function

import smtplib
import doctest
from unittest import TestCase, TestSuite, makeSuite, main
from unittest import TestCase, TestSuite, makeSuite

import transaction
from zope.interface import implementer
Expand Down Expand Up @@ -50,46 +47,49 @@ def testInterface(self):
self.assertEqual(manager.callable, object)
self.assertEqual(manager.args, (1, 2))

def test_successful_commit(self):
#Regression test for http://www.zope.org/Collectors/Zope3-dev/590
from zope.sendmail.delivery import MailDataManager

def print_success(*args):
print("message successfully sent, args: %s" % (args, ))

def print_abort():
print("message aborted")


def doctest_successful_commit():
"""Regression test for http://www.zope.org/Collectors/Zope3-dev/590
Let's do a full two-phase commit.
>>> from zope.sendmail.delivery import MailDataManager
>>> manager = MailDataManager(print_success, ('foo', 'bar'),
... onAbort=print_abort)
>>> transaction = object()
>>> manager.tpc_begin(transaction)
>>> manager.commit(transaction)
>>> manager.tpc_vote(transaction)
>>> manager.tpc_finish(transaction)
message successfully sent, args: ('foo', 'bar')
"""


def doctest_unsuccessful_commit():
"""Regression test for http://www.zope.org/Collectors/Zope3-dev/590
Let's start a two-phase commit, then abort it.
>>> from zope.sendmail.delivery import MailDataManager
>>> manager = MailDataManager(print_success, onAbort=print_abort)
>>> manager.tpc_begin(transaction)
>>> manager.commit(transaction)
>>> manager.tpc_vote(transaction)
>>> manager.tpc_abort(transaction)
message aborted
_success = []
def _on_success(*args):
_success.append(args)
_abort = []
def _on_abort(*args):
_abort.append(args)

manager = MailDataManager(_on_success, ('foo', 'bar'),
onAbort=_on_abort)
xact = object()
manager.tpc_begin(xact)
manager.commit(xact)
manager.tpc_vote(xact)
manager.tpc_finish(xact)
self.assertEqual(_success, [('foo', 'bar')])
self.assertEqual(_abort, [])

def test_unsuccessful_commit(self):
#Regression test for http://www.zope.org/Collectors/Zope3-dev/590
from zope.sendmail.delivery import MailDataManager

"""
_success = []
_abort = []

_success = []
def _on_success(*args):
_success.append(args)
_abort = []
def _on_abort(*args):
_abort.append(args)
manager = MailDataManager(_on_success, ('foo', 'bar'),
onAbort=_on_abort)
xact = object()
manager.tpc_begin(xact)
manager.commit(xact)
manager.tpc_vote(xact)
manager.tpc_abort(xact)
self.assertEqual(_success, [])
self.assertEqual(_abort, [()])


class TestDirectMailDelivery(TestCase):
Expand Down Expand Up @@ -381,8 +381,4 @@ def test_suite():
makeSuite(TestMailDataManager),
makeSuite(TestDirectMailDelivery),
makeSuite(TestQueuedMailDelivery),
doctest.DocTestSuite(),
))

if __name__ == '__main__':
main()
42 changes: 35 additions & 7 deletions src/zope/sendmail/tests/test_vocabulary.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,42 @@
"""Mail delivery names vocabulary test
"""
import unittest
from doctest import DocTestSuite
from zope.component.testing import setUp, tearDown


class MailDeliveryNamesTests(unittest.TestCase):
from zope.component.testing import setUp, tearDown

_marker = object()

def _register(self, *names):
from zope.component import provideUtility
from zope.interface import implementer
from zope.sendmail.interfaces import IMailDelivery
from zope.sendmail.vocabulary import MailDeliveryNames

@implementer(IMailDelivery)
class StubMailDelivery(object):
pass

for name in names:
provideUtility(StubMailDelivery(), name=name)

provideUtility(MailDeliveryNames, name='Mail Delivery Names')

def _callFUT(self, context=_marker):
from zope.sendmail.vocabulary import MailDeliveryNames
if context is self._marker:
return MailDeliveryNames()
return MailDeliveryNames(context)

def test_default(self):
NAMES = 'and now for something completely different'.split()
self._register(*NAMES)
vocab = self._callFUT()
names = sorted([term.value for term in vocab])
self.assertEqual(names, sorted(NAMES))

def test_suite():
return unittest.TestSuite([
DocTestSuite('zope.sendmail.vocabulary',
setUp=setUp, tearDown=tearDown),
unittest.makeSuite(MailDeliveryNamesTests),
])

if __name__ == '__main__':
unittest.main(defaultTest='test_suite')

0 comments on commit ab78cb0

Please sign in to comment.