Completed
Push — master ( c54497...3b5137 )
by Daniel
58s
created

test_web_menus()   B

Complexity

Conditions 5

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
c 1
b 0
f 0
dl 0
loc 14
rs 8.5454
1
# Test gw_web_pattern
2
def test_web_pattern(basicApp, WebPlugin):
3
    plugin = WebPlugin(basicApp)
4
    plugin.activate()
5
6
    assert basicApp.plugins.get("WebPlugin") is not None
7
    assert plugin.active is True
8
9
    assert hasattr(basicApp, "web") is True
10
11
12
def test_web_providers(basicApp, WebPlugin):
13
    from groundwork_web.patterns.gw_web_pattern.provider import BaseProvider
14
15
    plugin = WebPlugin(basicApp)
16
    plugin.activate()
17
18
    class TestProvider(BaseProvider):
19
        def __init__(self):
20
            pass
21
22
        def render(self, template):
23
            return template
24
25
    provider = plugin.web.providers.register("test_provider", TestProvider(), "my test provider")
26
27
    assert plugin.app.web.providers.default is not None
28
    assert plugin.app.web.providers.default == provider
29
30
    rendered_template = plugin.web.providers.render("test_template")
31
    assert rendered_template == "test_template"
32
33
34
def test_web_servers(basicApp, WebPlugin):
35
36
    def _test_server_start():
37
        return "started"
38
39
    plugin = WebPlugin(basicApp)
40
    plugin.activate()
41
42
    plugin.web.servers.register("server_start", _test_server_start, "start test server")
43
44
    server = plugin.app.web.servers.get("server_start")
45
    assert server is not None
46
    assert server.name == "server_start"
47
    assert server.function() == "started"
48
49
50
def test_web_contexts(basicApp, WebPlugin, tmpdir):
51
52
    plugin = WebPlugin(basicApp)
53
    plugin.activate()
54
55
    template_folder = tmpdir.mkdir("template")
56
    static_folder = tmpdir.mkdir("static")
57
58
    plugin.web.contexts.register("test_context", template_folder, static_folder, "/test", "test context")
59
60
    context = plugin.app.web.contexts.get("test_context")
61
    assert context is not None
62
    assert context.name == "test_context"
63
    assert context.template_folder == template_folder
64
    assert context.static_folder == static_folder
65
    assert context.url_prefix == "/test"
66
    assert context.description == "test context"
67
    assert context.plugin == plugin
68
69
70
def test_web_routes(basicApp, WebPlugin):
71
72
    def _view():
73
        pass
74
75
    plugin = WebPlugin(basicApp)
76
    plugin.activate()
77
78
    plugin.web.routes.register("/", ["GET", "POST"], _view, name="test_route", description="test route")
79
80
    route = plugin.app.web.routes.get("test_route")
81
82
    assert route is not None
83
    assert route.url == "/"
84
    assert route.methods == ["GET", "POST"]
85
    assert route.endpoint == _view
86
    assert route.context == plugin.app.web.contexts.default_context.name
87
    assert route.name == "test_route"
88
    assert route.description == "test route"
89
90
91
def test_web_menus(basicApp, WebPlugin):
92
    plugin = WebPlugin(basicApp)
93
    plugin.activate()
94
95
    menu_level_1 = plugin.web.menus.register("level_1_menu", "level_1")
96
    menu_level_2 = menu_level_1.register("level_2_menu", "level_2")
97
    assert plugin.app.web.menus.get("level_1_menu") == menu_level_1
98
    assert plugin.app.web.menus.get("level_1_menu").sub_menus["level_2_menu"] == menu_level_2
99
100
    # Cluster tests
101
    menu_level_1_a = plugin.web.menus.register("level_1_menu", "level_1", cluster="a")
102
    menu_level_2_a = menu_level_1_a.register("level_2_menu", "level_2")
103
    assert plugin.app.web.menus.get("level_1_menu", cluster="a") == menu_level_1_a
104
    assert plugin.app.web.menus.get("level_1_menu", cluster="a").sub_menus["level_2_menu"] == menu_level_2_a
105
106
107
108
109
110
111
112
113
114