[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/Publisher/Browser/tests - testGlobalBrowserMenuService.py:1.1 testGlobalBrowserMenuServiceDirectives.py:1.1 testDirectives.py:1.6
Jim Fulton
jim@zope.com
Tue, 18 Jun 2002 15:35:30 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/App/Publisher/Browser/tests
In directory cvs.zope.org:/tmp/cvs-serv23687/lib/python/Zope/App/Publisher/Browser/tests
Modified Files:
testDirectives.py
Added Files:
testGlobalBrowserMenuService.py
testGlobalBrowserMenuServiceDirectives.py
Log Message:
implemented
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/ContentSensitiveBrowserMenuConfigurationDirectives
=== Added File Zope3/lib/python/Zope/App/Publisher/Browser/tests/testGlobalBrowserMenuService.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""XXX short summary goes here.
XXX longer description goes here.
$Id: testGlobalBrowserMenuService.py,v 1.1 2002/06/18 19:34:57 jim Exp $
"""
from unittest import TestCase, TestSuite, main, makeSuite
from Zope.Publisher.Browser.IBrowserPublisher import IBrowserPublisher
from Zope.Exceptions import Forbidden, Unauthorized, DuplicationError
from Interface import Interface
from Zope.Publisher.Browser.BrowserRequest import TestRequest
from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
class I1(Interface): pass
class I11(I1): pass
class I12(I1): pass
class I111(I11): pass
class X:
__implements__ = IBrowserPublisher, I111
def f(self): pass
def browserDefault(self, r): return self, ()
def publishTraverse(self, request, name):
if name[:1] == 'f':
raise Forbidden, name
if name[:1] == 'u':
raise Unauthorized, name
return self.f
class Test(PlacelessSetup, TestCase):
def __reg(self):
from Zope.App.Publisher.Browser.GlobalBrowserMenuService \
import GlobalBrowserMenuService
r = GlobalBrowserMenuService()
return r
def testDup(self):
r = self.__reg()
r.menu('test_id', 'test menu')
self.assertRaises(DuplicationError, r.menu, 'test_id', 'test menu')
def test(self):
r = self.__reg()
r.menu('test_id', 'test menu')
r.menuItem('test_id', Interface, 'a1', 't1', 'd1')
r.menuItem('test_id', I1, 'a2', 't2', 'd2')
r.menuItem('test_id', I11, 'a3', 't3', 'd3', 'context')
r.menuItem('test_id', I11, 'a4', 't4', 'd4', 'not:context')
r.menuItem('test_id', I111, 'a5', 't5', 'd5')
r.menuItem('test_id', I111, 'a6', 't6', 'd6')
r.menuItem('test_id', I111, 'f7', 't7', 'd7')
r.menuItem('test_id', I111, 'u8', 't8', 'd8')
r.menuItem('test_id', I12, 'a9', 't9', 'd9')
menu = r.getMenu('test_id', X(), TestRequest())
def d(n):
return {'action': "a%s" % n,
'title': "t%s" % n,
'description': "d%s" % n,
}
self.assertEqual(list(menu), [d(5), d(6), d(3), d(2), d(1)])
def testEmpty(self):
r = self.__reg()
r.menu('test_id', 'test menu')
menu = r.getMenu('test_id', X(), TestRequest())
self.assertEqual(list(menu), [])
def test_suite():
return TestSuite((
makeSuite(Test),
))
if __name__=='__main__':
main(defaultTest='test_suite')
=== Added File Zope3/lib/python/Zope/App/Publisher/Browser/tests/testGlobalBrowserMenuServiceDirectives.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""XXX short summary goes here.
XXX longer description goes here.
$Id: testGlobalBrowserMenuServiceDirectives.py,v 1.1 2002/06/18 19:34:57 jim Exp $
"""
import os
from StringIO import StringIO
from unittest import TestCase, TestSuite, main, makeSuite
from Zope.Configuration.xmlconfig import xmlconfig
from Zope.Publisher.Browser.IBrowserPublisher import IBrowserPublisher
from Zope.Publisher.Browser.BrowserRequest import TestRequest
from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
import Zope.App.Publisher.Browser
defs_path = os.path.join(
os.path.split(Zope.App.Publisher.Browser.__file__)[0],
'meta.zcml')
template = """<zopeConfigure
xmlns='http://namespaces.zope.org/zope'
xmlns:browser='http://namespaces.zope.org/browser'>
%s
</zopeConfigure>"""
class Test(PlacelessSetup, TestCase):
def setUp(self):
PlacelessSetup.setUp(self)
xmlconfig(open(defs_path))
def test(self):
from Zope.App.Publisher.Browser.GlobalBrowserMenuService \
import globalBrowserMenuService
xmlconfig(StringIO(template % (
"""
<browser:menu id="test_id" title="test menu" />
<browser:menuItems menu="test_id" for="Interface.Interface">
<browser:menuItem action="a1" title="t1" />
</browser:menuItems>
<browser:menuItems menu="test_id"
for="
Zope.App.Publisher.Browser.tests.testGlobalBrowserMenuService.I1
">
<browser:menuItem action="a2" title="t2" />
</browser:menuItems>
<browser:menuItems menu="test_id"
for="
Zope.App.Publisher.Browser.tests.testGlobalBrowserMenuService.I11
">
<browser:menuItem action="a3" title="t3" filter="context" />
<browser:menuItem action="a4" title="t4" filter="not:context" />
</browser:menuItems>
<browser:menuItems menu="test_id"
for="
Zope.App.Publisher.Browser.tests.testGlobalBrowserMenuService.I111
">
<browser:menuItem action="a5" title="t5" />
<browser:menuItem action="a6" title="t6" />
<browser:menuItem action="f7" title="t7" />
<browser:menuItem action="u8" title="t8" />
</browser:menuItems>
<browser:menuItems menu="test_id"
for="
Zope.App.Publisher.Browser.tests.testGlobalBrowserMenuService.I12
">
<browser:menuItem action="a9" title="t9" />
</browser:menuItems>
""")))
from Zope.App.Publisher.Browser.tests.testGlobalBrowserMenuService \
import X
menu = globalBrowserMenuService.getMenu('test_id', X(), TestRequest())
def d(n):
return {'action': "a%s" % n,
'title': "t%s" % n,
'description': "",
}
self.assertEqual(list(menu), [d(5), d(6), d(3), d(2), d(1)])
def test_suite():
return TestSuite((
makeSuite(Test),
))
if __name__=='__main__':
main(defaultTest='test_suite')
=== Zope3/lib/python/Zope/App/Publisher/Browser/tests/testDirectives.py 1.5 => 1.6 ===
import Zope.App.Publisher.Browser
-
defs_path = os.path.join(
os.path.split(Zope.App.Publisher.Browser.__file__)[0],
'meta.zcml')