Development

Testing

All test modules reside in the postorius/src/postorius/tests directory and this is where you should put your own tests, too. To make the django test runner find your tests, make sure to add them to the folder’s __init__.py:

from postorius.tests import test_utils
from postorius.tests.test_list_members import ListMembersViewTest
from postorius.tests.test_list_settings import ListSettingsViewTest
from postorius.tests.my_own_tests import MyOwnUnitTest

__test__ = {
    "Test Utils": test_utils,
    "List Members": ListMembersViewTest,
    "List Settings": ListSettingsViewTest,
    "My Own Test": MyOwnUnitTest,
}

Running the tests

To run the tests go to your project folder and run python manage.py test postorius from there.

Mocking

Postorius uses Michael Foord’s mock library for mocking. There are some shortcuts you can use to quickly create mock objects that behave a little bit like objects retreived from mailman.client, like:

  • Domains
  • Mailing Lists
  • Users
  • Memberships
  • Addresses

Mocking mailman.client objects

Domains

postorius.tests.utils.create_mock_domain creates a mock domain object:

>>> properties = dict(contact_address='postmaster@example.org',
...                   description='Example dot Org',
...                   mail_host='example.org',
...                   url_host='www.example.org')
>>> mock_domain = create_mock_domain(properties)
>>> print mock_domain
<MagicMock name='Domain' id='...'>
>>> print mock_domain.contact_address
postmaster@example.org
>>> print mock_domain.description
Example dot Org
>>> print mock_domain.mail_host
example.org
>>> print mock_domain.url_host
www.example.org
Mailing Lists

postorius.tests.utils.create_mock_list creates a mock list object:

>>> properties = dict(fqdn_listname='testlist@example.org',
...                   mail_host='example.org',
...                   list_name='testlist',
...                   display_name='Test List')
>>> mock_list = create_mock_list(properties)
>>> print mock_list
<MagicMock name='List' id='...'>
>>> print mock_list.fqdn_listname
testlist@example.org
>>> print mock_list.mail_host
example.org
>>> print mock_list.list_name
testlist
>>> print mock_list.display_name
Test List
Memberships

postorius.tests.utils.create_mock_list creates a mock list object:

>>> properties = dict(fqdn_listname='testlist@example.org',
...                   address='les@example.org',)
>>> mock_member = create_mock_member(properties)
>>> print mock_member
<MagicMock name='Member' id='...'>
>>> print mock_member.fqdn_listname
testlist@example.org
>>> print mock_member.address
les@example.org

Table Of Contents

Previous topic

Installation

This Page