~sidnei/zope3/reduce-deps

« back to all changes in this revision

Viewing changes to src/zope/app/basicskin/tests/test_standardmacros.py

  • Committer: Sidnei da Silva
  • Date: 2010-07-05 21:07:01 UTC
  • Revision ID: sidnei.da.silva@canonical.com-20100705210701-zmqhqrbzad1mhzsl
- Reduce deps

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
##############################################################################
2
 
#
3
 
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
4
 
# All Rights Reserved.
5
 
#
6
 
# This software is subject to the provisions of the Zope Public License,
7
 
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
8
 
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
9
 
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
 
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
11
 
# FOR A PARTICULAR PURPOSE.
12
 
#
13
 
##############################################################################
14
 
"""Basic skin standard macros
15
 
 
16
 
$Id: test_standardmacros.py 106671 2009-12-16 22:56:40Z hannosch $
17
 
"""
18
 
import unittest
19
 
 
20
 
from zope.component import getGlobalSiteManager
21
 
from zope.component.testing import PlacelessSetup
22
 
from zope.interface import implements, Interface
23
 
from zope.publisher.browser import TestRequest
24
 
from zope.publisher.interfaces.browser import IBrowserView
25
 
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
26
 
 
27
 
from zope.app.basicskin.standardmacros import Macros
28
 
 
29
 
 
30
 
class ViewWithMacros(object):
31
 
    implements(IBrowserView)
32
 
 
33
 
    def __init__(self, context, request):
34
 
        self.context = context
35
 
        self.request = request
36
 
 
37
 
    def __call__(self):
38
 
        pass
39
 
 
40
 
    def __getitem__(self, key):
41
 
        return self.pages[key]
42
 
 
43
 
    pages = {}
44
 
 
45
 
class I(Interface): pass
46
 
 
47
 
class C(object):
48
 
    implements(I)
49
 
 
50
 
class page1(ViewWithMacros):
51
 
    pages = {'foo':'page1_foo',
52
 
             'bar':'page1_bar'}
53
 
 
54
 
class collides_with_page1(ViewWithMacros):
55
 
    pages = {'foo':'collides_with_page1_foo',
56
 
             'baz':'collides_with_page1_baz'}
57
 
 
58
 
class works_with_page1(ViewWithMacros):
59
 
    pages = {'fish':'works_with_page1_fish',
60
 
             'tree':'works_with_page1_tree'}
61
 
 
62
 
def createMacrosInstance(pages):
63
 
 
64
 
    class T(Macros):
65
 
        aliases = {'afoo': 'foo', 'abar': 'bar'}
66
 
 
67
 
        def __init__(self, context, request):
68
 
            self.context = context
69
 
            self.request = request
70
 
        macro_pages = pages
71
 
    return T(C(), TestRequest())
72
 
 
73
 
 
74
 
def browserView(for_, name, factory):
75
 
    gsm = getGlobalSiteManager()
76
 
    for_ = (for_, ) + (IDefaultBrowserLayer,)
77
 
    gsm.registerAdapter(factory, for_, Interface, name, event=False)
78
 
 
79
 
 
80
 
class Test(PlacelessSetup, unittest.TestCase):
81
 
 
82
 
    def setUp(self):
83
 
        PlacelessSetup.setUp(self)
84
 
        browserView(I, 'page1', page1)
85
 
        browserView(I, 'collides_with_page1', collides_with_page1)
86
 
        browserView(I, 'works_with_page1',  works_with_page1)
87
 
 
88
 
    def testSinglePage(self):
89
 
        macros = createMacrosInstance(('page1',))
90
 
        self.assertEqual(macros['foo'], 'page1_foo')
91
 
        self.assertEqual(macros['bar'], 'page1_bar')
92
 
        self.assertRaises(KeyError, macros.__getitem__, 'fish')
93
 
 
94
 
    def testConcordentPages(self):
95
 
        macros = createMacrosInstance(('page1', 'works_with_page1'))
96
 
        self.assertEqual(macros['foo'], 'page1_foo')
97
 
        self.assertEqual(macros['bar'], 'page1_bar')
98
 
        self.assertEqual(macros['fish'], 'works_with_page1_fish')
99
 
        self.assertEqual(macros['tree'], 'works_with_page1_tree')
100
 
        self.assertRaises(KeyError, macros.__getitem__, 'pants')
101
 
 
102
 
    def testConflictingPages(self):
103
 
        macros = createMacrosInstance(('page1', 'collides_with_page1'))
104
 
        self.assertEqual(macros['foo'], 'page1_foo')
105
 
        self.assertEqual(macros['bar'], 'page1_bar')
106
 
        self.assertEqual(macros['baz'], 'collides_with_page1_baz')
107
 
        self.assertRaises(KeyError, macros.__getitem__, 'pants')
108
 
 
109
 
    def testMacroAliases(self):
110
 
        macros = createMacrosInstance(('page1', 'collides_with_page1'))
111
 
        self.assertEqual(macros['afoo'], 'page1_foo')
112
 
        self.assertEqual(macros['abar'], 'page1_bar')
113
 
 
114
 
 
115
 
def test_suite():
116
 
    loader = unittest.TestLoader()
117
 
    return loader.loadTestsFromTestCase(Test)
118
 
 
119
 
if __name__=='__main__':
120
 
    unittest.TextTestRunner().run(test_suite())