=================
 ZCML directives
=================
This package registers two new ZCML directives. These are:
     -- used to register a new type of condition
     -- used to register a new type of action
We have created a dummy condition and a dummy action in 
plone.contentrules.rule.tests.elements. We haven't bothered to register an
addview or an edit view, but in real life we would need to do so using the
usual  directives or similar.
Here is how we would register these in ZCML:
    >>> zcml = """\
    ... 
    ... 
    ...     
    ...         
    ...     
    ... 
    ... """
    >>> from zope.configuration.xmlconfig import xmlconfig
    >>> from StringIO import StringIO
First, we need to make sure the ZCML directives are defined:
    >>> from zope.configuration.xmlconfig import XMLConfig
    >>> import plone.contentrules
    >>> XMLConfig('meta.zcml', plone.contentrules)()
Then we process the ZCML string above:
    >>> xmlconfig(StringIO(zcml))
The end result should be two new utilities. These can be used create and
inspect conditions and actions in rules.
    >>> from plone.contentrules.rule.interfaces import IRuleCondition
    >>> from plone.contentrules.rule.interfaces import IRuleAction
    
    >>> from zope.component import getUtility
    >>> from zope.component.interfaces import IObjectEvent
    >>> from plone.contentrules.rule.tests import elements
    >>> condition = getUtility(IRuleCondition, name=u"test.condition")
    >>> condition.title
    u'Test condition'
    >>> condition.description
    u'A test condition'
    >>> condition.for_ == None
    True
    >>> condition.event == IObjectEvent
    True
    >>> condition.addview
    u'test.condition'
    >>> condition.editview
    u'edit'
    >>> condition.schema == elements.ITestCondition
    True
    >>> condition.factory == elements.TestCondition
    True
    >>> action = getUtility(IRuleAction, name=u"test.action")
    >>> action.title
    u'Test action'
    >>> action.description
    u'A test action'
    >>> action.for_ == None
    True
    >>> action.event == IObjectEvent
    True
    >>> action.addview
    u'test.action'
    >>> action.editview
    u'edit'
    >>> action.schema == elements.ITestAction
    True
    >>> action.factory == elements.TestAction
    True