apparently the previous fix doesn't actually get us past the error; this one should do a better job although it's still not perfect either. for some reason the redirect to 'home' route is confused such that it the new URL drops the ending filename but the rest remains, so it's not really the home URL.. oh well at least this is better than before
165 lines
5.6 KiB
Python
165 lines
5.6 KiB
Python
# -*- coding: utf-8; -*-
|
|
|
|
from unittest.mock import patch
|
|
|
|
from wuttaweb import handler as mod, static
|
|
from wuttaweb.forms import Form
|
|
from wuttaweb.grids import Grid
|
|
from wuttaweb.menus import MenuHandler
|
|
from wuttaweb.testing import WebTestCase
|
|
|
|
|
|
class MockMenuHandler(MenuHandler):
|
|
pass
|
|
|
|
|
|
class LegacyMenuHandler(MenuHandler):
|
|
pass
|
|
|
|
|
|
class AnotherMenuHandler(MenuHandler):
|
|
pass
|
|
|
|
|
|
class TestWebHandler(WebTestCase):
|
|
|
|
def make_handler(self):
|
|
return mod.WebHandler(self.config)
|
|
|
|
def test_get_fanstatic_url(self):
|
|
handler = self.make_handler()
|
|
|
|
# default with / root path
|
|
url = handler.get_fanstatic_url(self.request, static.logo)
|
|
self.assertEqual(url, "/fanstatic/wuttaweb_img/logo.png")
|
|
|
|
# what about a subpath
|
|
with patch.object(self.request, "script_name", new="/testing"):
|
|
url = handler.get_fanstatic_url(self.request, static.logo)
|
|
self.assertEqual(url, "/testing/fanstatic/wuttaweb_img/logo.png")
|
|
|
|
def test_get_favicon_url(self):
|
|
handler = self.make_handler()
|
|
|
|
# default
|
|
url = handler.get_favicon_url(self.request)
|
|
self.assertEqual(url, "/fanstatic/wuttaweb_img/favicon.ico")
|
|
|
|
# config override
|
|
self.config.setdefault("wuttaweb.favicon_url", "/testing/other.ico")
|
|
url = handler.get_favicon_url(self.request)
|
|
self.assertEqual(url, "/testing/other.ico")
|
|
|
|
def test_get_header_logo_url(self):
|
|
handler = self.make_handler()
|
|
|
|
# default
|
|
url = handler.get_header_logo_url(self.request)
|
|
self.assertEqual(url, "/fanstatic/wuttaweb_img/favicon.ico")
|
|
|
|
# config override
|
|
self.config.setdefault("wuttaweb.header_logo_url", "/testing/header.png")
|
|
url = handler.get_header_logo_url(self.request)
|
|
self.assertEqual(url, "/testing/header.png")
|
|
|
|
def test_get_main_logo_url(self):
|
|
handler = self.make_handler()
|
|
|
|
# default
|
|
url = handler.get_main_logo_url(self.request)
|
|
self.assertEqual(url, "/fanstatic/wuttaweb_img/logo.png")
|
|
|
|
# config override
|
|
self.config.setdefault("wuttaweb.logo_url", "/testing/other.png")
|
|
url = handler.get_main_logo_url(self.request)
|
|
self.assertEqual(url, "/testing/other.png")
|
|
|
|
def test_get_menu_handler(self):
|
|
handler = self.make_handler()
|
|
|
|
# built-in default
|
|
menus = handler.get_menu_handler()
|
|
self.assertIsInstance(menus, MenuHandler)
|
|
self.assertIs(type(menus), MenuHandler)
|
|
|
|
# configured default
|
|
self.config.setdefault(
|
|
"wutta.web.menus.handler.default_spec", "tests.test_handler:MockMenuHandler"
|
|
)
|
|
menus = handler.get_menu_handler()
|
|
self.assertIsInstance(menus, MockMenuHandler)
|
|
|
|
# configured handler (legacy)
|
|
self.config.setdefault(
|
|
"wutta.web.menus.handler_spec", "tests.test_handler:LegacyMenuHandler"
|
|
)
|
|
menus = handler.get_menu_handler()
|
|
self.assertIsInstance(menus, LegacyMenuHandler)
|
|
|
|
# configued handler (proper)
|
|
self.config.setdefault(
|
|
"wutta.web.menus.handler.spec", "tests.test_handler:AnotherMenuHandler"
|
|
)
|
|
menus = handler.get_menu_handler()
|
|
self.assertIsInstance(menus, AnotherMenuHandler)
|
|
|
|
def test_get_menu_handler_specs(self):
|
|
handler = self.make_handler()
|
|
|
|
# at least one spec by default
|
|
specs = handler.get_menu_handler_specs()
|
|
self.assertIn("wuttaweb.menus:MenuHandler", specs)
|
|
|
|
# caller can specify default as string
|
|
specs = handler.get_menu_handler_specs(
|
|
default="tests.test_handler:MockMenuHandler"
|
|
)
|
|
self.assertIn("wuttaweb.menus:MenuHandler", specs)
|
|
self.assertIn("tests.test_handler:MockMenuHandler", specs)
|
|
self.assertNotIn("tests.test_handler:AnotherMenuHandler", specs)
|
|
|
|
# caller can specify default as list
|
|
specs = handler.get_menu_handler_specs(
|
|
default=[
|
|
"tests.test_handler:MockMenuHandler",
|
|
"tests.test_handler:AnotherMenuHandler",
|
|
]
|
|
)
|
|
self.assertIn("wuttaweb.menus:MenuHandler", specs)
|
|
self.assertIn("tests.test_handler:MockMenuHandler", specs)
|
|
self.assertIn("tests.test_handler:AnotherMenuHandler", specs)
|
|
|
|
# default can be configured
|
|
self.config.setdefault(
|
|
"wutta.web.menus.handler.default_spec",
|
|
"tests.test_handler:AnotherMenuHandler",
|
|
)
|
|
specs = handler.get_menu_handler_specs()
|
|
self.assertIn("wuttaweb.menus:MenuHandler", specs)
|
|
self.assertNotIn("tests.test_handler:MockMenuHandler", specs)
|
|
self.assertIn("tests.test_handler:AnotherMenuHandler", specs)
|
|
|
|
# the rest come from entry points
|
|
with patch.object(
|
|
mod,
|
|
"load_entry_points",
|
|
return_value={
|
|
"legacy": LegacyMenuHandler,
|
|
},
|
|
):
|
|
specs = handler.get_menu_handler_specs()
|
|
self.assertNotIn("wuttaweb.menus:MenuHandler", specs)
|
|
self.assertNotIn("tests.test_handler:MockMenuHandler", specs)
|
|
self.assertIn("tests.test_handler:LegacyMenuHandler", specs)
|
|
# nb. this remains from previous config default
|
|
self.assertIn("tests.test_handler:AnotherMenuHandler", specs)
|
|
|
|
def test_make_form(self):
|
|
handler = self.make_handler()
|
|
form = handler.make_form(self.request)
|
|
self.assertIsInstance(form, Form)
|
|
|
|
def test_make_grid(self):
|
|
handler = self.make_handler()
|
|
grid = handler.make_grid(self.request)
|
|
self.assertIsInstance(grid, Grid)
|