Skip to content

Commit

Permalink
Backported
Browse files Browse the repository at this point in the history
r26524 | srichter | 2004-07-14 03:45:38 -0400 (Wed, 14 Jul 2004) | 6 lines
r26551 | srichter | 2004-07-15 03:06:37 -0400 (Thu, 15 Jul 2004) | 6 lines
r26522 | pruggera | 2004-07-14 01:42:06 -0400 (Wed, 14 Jul 2004) | 1 line
r26531 | pruggera | 2004-07-14 13:00:15 -0400 (Wed, 14 Jul 2004) | 1 line
r26534 | pruggera | 2004-07-14 15:55:34 -0400 (Wed, 14 Jul 2004) | 1 line
r26540 | pruggera | 2004-07-14 18:14:25 -0400 (Wed, 14 Jul 2004) | 1 line
  • Loading branch information
strichter committed Aug 12, 2004
1 parent 2209ae9 commit ea9ab20
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 0 deletions.
39 changes: 39 additions & 0 deletions tests/sampleinterfaces.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
##############################################################################
#
# Copyright (c) 2001, 2002 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.
#
##############################################################################
"""Fake Traverser with interfaces.
$Id$
"""
from zope.interface import Interface, implements

from zope.app.traversing.interfaces import ITraverser

class FakeTraverser(object):

implements(ITraverser)

def __init__(self, *args, **kw): pass

def traverse(self, *args, **kw):
return None


class I1(Interface): pass
class I2(I1): pass

class O1(object):
implements(I1)

class O2(object):
implements(I2)
111 changes: 111 additions & 0 deletions tests/test_standardmacros.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
##############################################################################
#
# Copyright (c) 2001, 2002 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.
#
##############################################################################
"""
$Id$
"""
import unittest
from zope.app.tests import ztapi
from zope.interface import implements
from zope.app.site.tests.placefulsetup import PlacefulSetup
from zope.publisher.browser import TestRequest
from zope.app.publisher.interfaces.browser import IBrowserView
from zope.interface import Interface
from zope.app.basicskin.standardmacros import Macros


class ViewWithMacros(object):
implements(IBrowserView)

def __init__(self, context, request):
self.context = context
self.request = request

def __call__(self):
pass

def __getitem__(self, key):
return self.pages[key]

pages = {}

class I(Interface): pass

class C(object):
implements(I)

class page1(ViewWithMacros):
pages = {'foo':'page1_foo',
'bar':'page1_bar'}

class collides_with_page1(ViewWithMacros):
pages = {'foo':'collides_with_page1_foo',
'baz':'collides_with_page1_baz'}

class works_with_page1(ViewWithMacros):
pages = {'fish':'works_with_page1_fish',
'tree':'works_with_page1_tree'}

def createMacrosInstance(pages):

class T(Macros):
aliases = {'afoo': 'foo', 'abar': 'bar'}

def __init__(self, context, request):
self.context = context
self.request = request
macro_pages = pages
return T(C(), TestRequest())

class Test(PlacefulSetup, unittest.TestCase):

def setUp(self):
PlacefulSetup.setUp(self)
ztapi.browserView(I, 'page1', page1)
ztapi.browserView(I, 'collides_with_page1', collides_with_page1)
ztapi.browserView(I, 'works_with_page1', works_with_page1)

def testSinglePage(self):
macros = createMacrosInstance(('page1',))
self.assertEqual(macros['foo'], 'page1_foo')
self.assertEqual(macros['bar'], 'page1_bar')
self.assertRaises(KeyError, macros.__getitem__, 'fish')

def testConcordentPages(self):
macros = createMacrosInstance(('page1', 'works_with_page1'))
self.assertEqual(macros['foo'], 'page1_foo')
self.assertEqual(macros['bar'], 'page1_bar')
self.assertEqual(macros['fish'], 'works_with_page1_fish')
self.assertEqual(macros['tree'], 'works_with_page1_tree')
self.assertRaises(KeyError, macros.__getitem__, 'pants')

def testConflictingPages(self):
macros = createMacrosInstance(('page1', 'collides_with_page1'))
self.assertEqual(macros['foo'], 'page1_foo')
self.assertEqual(macros['bar'], 'page1_bar')
self.assertEqual(macros['baz'], 'collides_with_page1_baz')
self.assertRaises(KeyError, macros.__getitem__, 'pants')

def testMacroAliases(self):
macros = createMacrosInstance(('page1', 'collides_with_page1'))
self.assertEqual(macros['afoo'], 'page1_foo')
self.assertEqual(macros['abar'], 'page1_bar')


def test_suite():
loader = unittest.TestLoader()
return loader.loadTestsFromTestCase(Test)

if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())

0 comments on commit ea9ab20

Please sign in to comment.