Skip to content

Commit

Permalink
Some provideUtility -> registerUtility conversion to cut down the
Browse files Browse the repository at this point in the history
deprecation noise a bit.
  • Loading branch information
philikon committed Apr 4, 2006
1 parent 023f4a2 commit 909832a
Showing 1 changed file with 394 additions and 0 deletions.
394 changes: 394 additions & 0 deletions browser/tests/test_addMenuItem.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,394 @@
#############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Test the addMenuItem directive
>>> context = Context()
>>> addMenuItem(context, class_=X, title="Add an X",
... permission="zope.ManageContent")
>>> context
((('utility',
<InterfaceClass zope.component.interfaces.IFactory>,
'BrowserAdd__zope.app.publisher.browser.tests.test_addMenuItem.X'),
<function handler>,
('registerUtility',
<Factory for <class 'zope.app.publisher.browser.tests.test_addMenuItem.X'>>,
<InterfaceClass zope.component.interfaces.IFactory>,
'BrowserAdd__zope.app.publisher.browser.tests.test_addMenuItem.X')),
(None,
<function provideInterface>,
('zope.component.interfaces.IFactory',
<InterfaceClass zope.component.interfaces.IFactory>)),
(('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
$Id$
"""

import unittest
from zope.testing.doctestunit import DocTestSuite
import re
import pprint
import cStringIO
from zope.interface import Interface
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.app.publisher.browser.menumeta import addMenuItem

atre = re.compile(' at [0-9a-fA-Fx]+')

class IX(Interface):
pass

class X(object):
pass

class ILayerStub(IBrowserRequest):
pass

class MenuStub(object):
pass


class Context(object):
actions = ()
info = ''

def action(self, discriminator, callable, args, order=0):
self.actions += ((discriminator, callable, args), )

def __repr__(self):
stream = cStringIO.StringIO()
pprinter = pprint.PrettyPrinter(stream=stream, width=60)
pprinter.pprint(self.actions)
r = stream.getvalue()
return (''.join(atre.split(r))).strip()


def test_w_factory():
"""
>>> context = Context()
>>> addMenuItem(context, factory="x.y.z", title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo")
>>> context
((('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

def test_w_factory_and_view():
"""
>>> context = Context()
>>> addMenuItem(context, factory="x.y.z", title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo", view="AddX")
>>> context
((None,
<function _checkViewFor>,
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>,
'AddX')),
(('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

def test_w_factory_class_view():
"""
>>> context = Context()
>>> addMenuItem(context, class_=X, title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo", view="AddX")
>>> import pprint
>>> context
((('utility',
<InterfaceClass zope.component.interfaces.IFactory>,
'BrowserAdd__zope.app.publisher.browser.tests.test_addMenuItem.X'),
<function handler>,
('registerUtility',
<Factory for <class 'zope.app.publisher.browser.tests.test_addMenuItem.X'>>,
<InterfaceClass zope.component.interfaces.IFactory>,
'BrowserAdd__zope.app.publisher.browser.tests.test_addMenuItem.X')),
(None,
<function provideInterface>,
('zope.component.interfaces.IFactory',
<InterfaceClass zope.component.interfaces.IFactory>)),
(None,
<function _checkViewFor>,
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>,
'AddX')),
(('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

def test_w_for_factory():
"""
>>> context = Context()
>>> addMenuItem(context, for_=IX, factory="x.y.z", title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo")
>>> context
((None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>)),
(('adapter',
(<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

def test_w_factory_layer():
"""
>>> context = Context()
>>> addMenuItem(context, factory="x.y.z", title="Add an X", layer=ILayerStub,
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo")
>>> context
((('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.ILayerStub>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.ILayerStub>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.ILayerStub>)))
"""

def test_w_for_menu_factory():
"""
>>> context = Context()
>>> addMenuItem(context, for_=IX, menu=MenuStub, factory="x.y.z", title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo")
>>> context
((None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>)),
(('adapter',
(<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<class 'zope.app.publisher.browser.tests.test_addMenuItem.MenuStub'>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<class 'zope.app.publisher.browser.tests.test_addMenuItem.MenuStub'>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<class 'zope.app.publisher.browser.tests.test_addMenuItem.MenuStub'>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.browser.tests.test_addMenuItem.IX>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

def test_w_factory_icon_extra_order():
"""
>>> context = Context()
>>> addMenuItem(context, factory="x.y.z", title="Add an X",
... permission="zope.ManageContent", description="blah blah",
... filter="context/foo", icon=u'/@@/icon.png', extra='Extra',
... order=99)
>>> context
((('adapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X'),
<function handler>,
('provideAdapter',
(<InterfaceClass zope.app.container.interfaces.IAdding>,
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>),
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>,
'Add an X',
<zope.app.publisher.browser.menumeta.MenuItemFactory object>,
'')),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.publisher.interfaces.browser.AddMenu>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.app.container.interfaces.IAdding>)),
(None,
<function provideInterface>,
('',
<InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)))
"""

from zope.configuration.xmlconfig import XMLConfig

import zope.app
import zope.app.form.browser

from zope.app.testing import placelesssetup

class TestAddMenuItem(placelesssetup.PlacelessSetup, unittest.TestCase):

def setUp(self):
super(TestAddMenuItem, self).setUp()
XMLConfig('meta.zcml', zope.app.form.browser)()
XMLConfig('meta.zcml', zope.app.publisher.browser)()

def test_addMenuItemDirectives(self):
XMLConfig('tests/addmenuitems.zcml', zope.app.publisher.browser)()

def test_suite():
return unittest.TestSuite((
DocTestSuite(),
unittest.makeSuite(TestAddMenuItem),
))

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

0 comments on commit 909832a

Please sign in to comment.