<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Project><name>plone.mocktestcase</name>
<shortdesc>Mock unit test case based on ``mocker``</shortdesc>
<description>Introduction
============

This package contains a unittest test class based on the one from the
``Mocker`` mock library (http://labix.org/mocker).

This class provides support for registering Zope 3 components (utilities,
adapters, subscription adapters and event handlers) from mocks and tearing 
down the global component registry during test tear-down.

There are also a few convenience methods and parameter checkers that are
useful to Zope and Plone testing.

Please see the Mocker documentation for more detail:

    http://labix.org/mocker

A test case that mocks a utility may look like this::

    from plone.mocktestcase import MockTestCase
    
    from my.package.interfaces import IMyInterface
    from my.package.foo import testable_method

    class MyTestCase(MockTestCase):
    
        def test_something(self):

            utility_mock = self.mocker.mock()
            self.expect(utility_mock.do_something()).result("foo")
            self.mock_utility(utility_mock, IMyInterface)
        
            # Put mocker into replay mode
            self.replay()
        
            # Verify that testable_method() looks up a utility for 
            # IMyInterface and calls do_something() on it, which returns
            # "foo".
        
            testable_method()

The following helper methods are available:

 self.replay()
     Puts the mock into replay mode.
     
 self.create_dummy(\*\*kw)
     Return a dummy object that is *not* a mock object, just a dumb object 
     with whatever attributes or methods you pass as keyword arguments.
     To make a dummy method, pass a function object or a lambda, e.g.
     self.create_dummy(id="foo", absolute_url=lambda:'http://example.org/foo')

 self.mock_utility(mock, provides, name=u"")
     Register the given mock object as a global utility providing the given
     interface, with the given name (defaults to the unnamed default utility).

 self.mock_adapter(mock, provides, adapts, name=u"")
     Register the given mock object as a global adapter providing the given
     interface and adapting the given interfaces, with the given name 
     (defaults to the unnamed default adapter).

 self.mock_subscription_adapter(mock, provides, adapts)
     Register the given mock object as a global subscription adapter providing
     the given interface and adapting the given interfaces.
     
 self.mock_handler(mock, adapts)
     Register the given mock object as a global event subscriber for the
     given event types.
     
 self.mock_tool(mock, name)
     Create a getToolByName() mock (using 'replace' mode) and configure it so
     that code calling getToolByName(context, name) obtains the given mock
     object. Can be used multiple times: the getToolByName() mock is created
     lazily the first time this method is called in any one test fixture.

 self.match_provides(interface)
     A custom matcher that can be used to check whether an argument to a mock
     call provides the given interface. Uses interface.providedBy(arg).
     
 self.match_type(type)
     A custom matcher that can be used to check whether an argument to a mock 
     call is if the given type. Uses isinstance(arg, type).


Changelog
=========

1.0b3
-----

* Added mock_tool() helper.

1.0b2
-----

* Minor amendments to mock Zope 3 component support

1.0b1
-----

* Initial release</description>
<homepage rdf:resource="http://plone.org" />
<maintainer><foaf:Person><foaf:name>Martin Aspeli</foaf:name>
<foaf:mbox_sha1sum>e9d69205eabc8d3443d474f8c6a26446c2541eb9</foaf:mbox_sha1sum></foaf:Person></maintainer>
<release><Version><revision>1.0b3</revision></Version></release>
</Project></rdf:RDF>