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

zopefoundation / grokcore.layout / 16098815659

18 Jun 2025 06:34AM UTC coverage: 96.033%. Remained the same
16098815659

push

github

icemac
Back to development: 5.1

22 of 26 branches covered (84.62%)

Branch coverage included in aggregate %.

438 of 453 relevant lines covered (96.69%)

0.97 hits per line

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

97.37
/src/grokcore/layout/tests/layout/specializedlayout.py
1
"""
2
  >>> one = One()
3
  >>> two = Two()
4

5
  >>> from zope.publisher.browser import TestRequest
6
  >>> from zope.interface import directlyProvides
7
  >>> from zope.component import getMultiAdapter
8

9
  >>> request = TestRequest()
10

11
We test on the first layer layer::
12

13
  >>> directlyProvides(request, IALayer)
14
  >>> view = getMultiAdapter((one, request), name="myview")
15
  >>> print(view())
16
  Layout A for context One
17

18
  >>> view = getMultiAdapter((two, request), name="myview")
19
  >>> print(view())
20
  Layout A for context Two
21

22
We switch the layer::
23

24
  >>> directlyProvides(request, IBLayer)
25
  >>> view = getMultiAdapter((one, request), name="myview")
26
  >>> print(view())
27
  Layout B for context One
28

29
  >>> view = getMultiAdapter((two, request), name="myview")
30
  >>> print(view())
31
  Layout B for context Two
32

33
"""
34
import grokcore.view as grok
1✔
35
from grokcore.view import IDefaultBrowserLayer
1✔
36
from zope.interface import Interface
1✔
37

38
from grokcore.layout import Layout
1✔
39
from grokcore.layout import Page
1✔
40

41

42
class IALayer(IDefaultBrowserLayer):
1✔
43
    pass
1✔
44

45

46
class IBLayer(IALayer):
1✔
47
    pass
1✔
48

49

50
class One(grok.Context):
1✔
51
    pass
1✔
52

53

54
class Two(One):
1✔
55
    pass
1✔
56

57

58
class AOneLayout(Layout):
1✔
59
    grok.context(One)
1✔
60
    grok.layer(IALayer)
1✔
61

62
    def render(self):
1✔
63
        return "Layout A for context One"
1✔
64

65

66
class ATwoLayout(Layout):
1✔
67
    grok.context(Two)
1✔
68
    grok.layer(IALayer)
1✔
69

70
    def render(self):
1✔
71
        return "Layout A for context Two"
1✔
72

73

74
class BOneLayout(Layout):
1✔
75
    grok.context(One)
1✔
76
    grok.layer(IBLayer)
1✔
77

78
    def render(self):
1✔
79
        return "Layout B for context One"
1✔
80

81

82
class BTwoLayout(Layout):
1✔
83
    grok.context(Two)
1✔
84
    grok.layer(IBLayer)
1✔
85

86
    def render(self):
1✔
87
        return "Layout B for context Two"
1✔
88

89

90
class MyView(Page):
1✔
91
    grok.context(Interface)
1✔
92
    grok.layer(IALayer)
1✔
93

94
    def render(self):
1✔
95
        return "MyView on IALayouer"
×
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