• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / Zope / 3956162881

pending completion
3956162881

push

github

Michael Howitz
Update to deprecation warning free releases.

4401 of 7036 branches covered (62.55%)

Branch coverage included in aggregate %.

27161 of 31488 relevant lines covered (86.26%)

0.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.72
/src/ZPublisher/tests/testPostTraversal.py
1
from unittest import TestCase
1✔
2

3
import Zope2
1✔
4
from Acquisition import Implicit
1✔
5
from ZPublisher.BaseRequest import BaseRequest
1✔
6
from ZPublisher.HTTPResponse import HTTPResponse
1✔
7

8

9
class WSGILayer:
1✔
10
    @staticmethod
1✔
11
    def setUp():
1✔
12
        Zope2.startup_wsgi()
1✔
13

14

15
pt_simple_was_run = 0
1✔
16

17

18
def pt_simple():
1✔
19
    global pt_simple_was_run
20
    pt_simple_was_run = 1
1✔
21
    pass
1✔
22

23

24
def pt_static_arg(request, b):
1✔
25
    request.set('b', b)
1✔
26
    pass
1✔
27

28

29
def pt_simple_redirect(a):
1✔
30
    return a
1✔
31

32

33
def pt_chain_test(request, string):
1✔
34
    request.set('a', request.get('a', '') + string)
1✔
35

36

37
class DummyObjectBasic(Implicit):
1✔
38
    """ Dummy class with docstring.
39
    """
40

41
    def _setObject(self, id, object):
1✔
42
        setattr(self, id, object)
1✔
43
        return getattr(self, id)
1✔
44

45
    def view(self):
1✔
46
        """ Attribute with docstring.
47
        """
48
        return 'view content'
×
49

50

51
class DummyObjectWithPTHook(DummyObjectBasic):
1✔
52
    """ Dummy class with docstring.
53
    """
54

55
    traversal = []
1✔
56

57
    def __before_publishing_traverse__(self, object, REQUEST):
1✔
58
        for x in self.traversal:
1✔
59
            REQUEST.post_traverse(*x)
1✔
60

61

62
class TestBaseRequestPT(TestCase):
1✔
63
    layer = WSGILayer
1✔
64

65
    def setUp(self):
1✔
66
        self.root = DummyObjectBasic()
1✔
67
        self.f1 = self.root._setObject('folder', DummyObjectBasic())
1✔
68
        self.f1._setObject('objBasic', DummyObjectWithPTHook())
1✔
69

70
    def makeBaseRequest(self):
1✔
71
        response = HTTPResponse()
1✔
72
        environment = {
1✔
73
            'URL': '',
74
            'PARENTS': [self.root],
75
            'steps': [],
76
            '_hacked_path': 0,
77
            '_test_counter': 0,
78
            'response': response,
79
        }
80
        return BaseRequest(environment)
1✔
81

82
    def test_post_basic(self):
1✔
83
        global pt_simple_was_run
84
        pt_simple_was_run = 0
1✔
85
        r = self.makeBaseRequest()
1✔
86

87
        # Set hook
88
        self.f1.objBasic.traversal = [(pt_simple,)]
1✔
89
        x = r.traverse('folder/objBasic')
1✔
90

91
        # Object should be self.f1.objBasic
92
        self.assertEqual(x, self.f1.objBasic)
1✔
93
        self.assertEqual(pt_simple_was_run, 1)
1✔
94

95
        self.f1.objBasic.traversal = []
1✔
96

97
    def test_post_arg(self):
1✔
98

99
        r = self.makeBaseRequest()
1✔
100
        b = 1
1✔
101

102
        self.f1.objBasic.traversal = [(pt_static_arg, (r, b))]
1✔
103
        x = r.traverse('folder/objBasic')
1✔
104

105
        # Object should have been traversed normally
106
        self.assertEqual(x, self.f1.objBasic)
1✔
107
        self.assertEqual(r.get('b', 0), b)
1✔
108

109
        self.f1.objBasic.traversal = []
1✔
110

111
    def test_hook_chain(self):
1✔
112

113
        r = self.makeBaseRequest()
1✔
114

115
        self.f1.objBasic.traversal = [
1✔
116
            (pt_chain_test, (r, 'a')),
117
            (pt_chain_test, (r, 'b')),
118
            (pt_chain_test, (r, 'c')),
119
            (pt_chain_test, (r, 'd')),
120
        ]
121

122
        r.traverse('folder/objBasic')
1✔
123
        self.assertEqual(r.get('a', ''), 'abcd')
1✔
124

125
        self.f1.objBasic.traversal = []
1✔
126

127
    def test_hook_redirect(self):
1✔
128
        r = self.makeBaseRequest()
1✔
129
        check = []
1✔
130
        self.f1.objBasic.traversal = [(pt_simple_redirect, (check,))]
1✔
131

132
        x = r.traverse('folder/objBasic')
1✔
133

134
        self.assertEqual(x, check)
1✔
135

136
    def test_hook_chain_redirect(self):
1✔
137
        r = self.makeBaseRequest()
1✔
138
        check = []
1✔
139
        self.f1.objBasic.traversal = [
1✔
140
            (pt_chain_test, (r, 'a')),
141
            (pt_chain_test, (r, 'b')),
142
            (pt_chain_test, (r, 'c')),
143
            (pt_simple_redirect, (check,)),
144
            (pt_simple_redirect, (1,)),
145
            (pt_chain_test, (r, 'd')),
146
        ]
147

148
        x = r.traverse('folder/objBasic')
1✔
149

150
        self.assertEqual(r.get('a', ''), 'abc')
1✔
151
        self.assertEqual(x, check)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc