Produce at startup the map of route names to paths, for template use
authorKarl O. Pinc <kop@karlpinc.com>
Tue, 8 Dec 2020 03:56:57 +0000 (21:56 -0600)
committerKarl O. Pinc <kop@karlpinc.com>
Tue, 8 Dec 2020 03:56:57 +0000 (21:56 -0600)
src/pgwui_server/pgwui_server.py
tests/test_pgwui_server.py

index 54ae788d409d986445c961d722a36d20733654fd..ad556b2b84adf189b8123fd5ba5c2b960e40861b 100644 (file)
@@ -33,6 +33,7 @@ from pgwui_common import check_settings
 from pgwui_common import exceptions as common_ex
 from pgwui_common import routes
 from pgwui_common import plugin
+import pgwui_common.urls
 
 # Constants
 
@@ -206,18 +207,20 @@ def autoconfigurable_components(settings, components):
 def apply_component_defaults(settings, components):
     '''Apply component default settings to existing settings
     '''
-    config = Configurator(settings=settings)
-    config.include('pgwui_common')
-
-    components_to_config = autoconfigurable_components(settings, components)
-    rp = settings['pgwui'].get('route_prefix')
-    with config.route_prefix_context(rp):
-        for component in components_to_config:
-            log.debug('Autoconfiguring PGWUI component: {}'.format(component))
-            config.include(component)
-        routes.add_routes(config, settings)
-    log.debug('Done autoconfiguring PGWUI components')
-    return config
+    with Configurator(settings=settings) as config:
+        config.include('pgwui_common')
+
+        components_to_config = autoconfigurable_components(
+            settings, components)
+        rp = settings['pgwui'].get('route_prefix')
+        with config.route_prefix_context(rp):
+            for component in components_to_config:
+                log.debug(
+                    'Autoconfiguring PGWUI component: {}'.format(component))
+                config.include(component)
+            routes.add_routes(config, settings)
+        log.debug('Done autoconfiguring PGWUI components')
+        return config
 
 
 def pgwui_server_config(settings):
@@ -225,7 +228,9 @@ def pgwui_server_config(settings):
     '''
     components = plugin.find_pgwui_components()
     exit_on_invalid_settings(settings, components)
-    return apply_component_defaults(settings, components)
+    config = apply_component_defaults(settings, components)
+    pgwui_common.urls.add_urls_setting(config, settings)
+    return config
 
 
 def main(global_config, **settings):
index d9d494278a2e747ca50fd25508b6980f69b4dc82..4090563d123e9dfdd39d6f4b0a9698cadfca491e 100644 (file)
@@ -29,12 +29,15 @@ import pgwui_common.exceptions as common_ex
 import pgwui_common.check_settings
 import pgwui_common.plugin
 import pgwui_common.routes
+import pgwui_common.urls
 # Use as a regular module, not a plugin, so lint checks work
 from pgwui_testing import testing
 
 import pgwui_server.pgwui_server as pgwui_server
 import pgwui_server.exceptions as server_ex
 
+# Activiate the PGWUI pytest plugin
+pytest_plugins = ("pgwui",)
 
 # Mark all tests with "unittest"
 pytestmark = pytest.mark.unittest
@@ -54,6 +57,9 @@ mock_validate_settings = testing.make_mock_fixture(
 mock_add_routes = testing.make_mock_fixture(
     pgwui_common.routes, 'add_routes')
 
+mock_set_urls = testing.make_mock_fixture(
+    pgwui_common.urls, 'set_urls')
+
 
 # Unit tests
 
@@ -515,7 +521,7 @@ def test_apply_component_defaults(caplog,
         ['pgwui_mock_component_name']
 
     result = pgwui_server.apply_component_defaults({'pgwui': {}}, [])
-    assert isinstance(result, type(MockConfigurator()))
+    assert str(type(result)) == str(type(MockConfigurator))
 
     logs = caplog.record_tuples
 
@@ -530,18 +536,29 @@ mock_apply_component_defaults = testing.make_mock_fixture(
     pgwui_server, 'apply_component_defaults')
 
 
+mock_add_urls_setting = testing.make_mock_fixture(
+    pgwui_common.urls, 'add_urls_setting')
+
+
 # pgwui_server_config()
 
 def test_pgwui_server_config(
+        pyramid_config,
         mock_find_pgwui_components,
-        mock_apply_component_defaults, mock_exit_on_invalid_settings):
-    '''Returns a configuration'''
-    test_configurator = 'test configurator'
-    mock_apply_component_defaults.return_value = test_configurator
+        mock_exit_on_invalid_settings,
+        mock_apply_component_defaults,
+        mock_add_urls_setting):
+    '''Makes expected calls, returns a configuration
+    '''
+    mock_apply_component_defaults.return_value = pyramid_config
 
     result = pgwui_server.pgwui_server_config({})
 
-    assert result == test_configurator
+    mock_find_pgwui_components.assert_called_once()
+    mock_exit_on_invalid_settings.assert_called_once()
+    mock_apply_component_defaults.assert_called_once()
+    mock_add_urls_setting.assert_called_once()
+    assert result == pyramid_config
 
 
 mock_pgwui_server_config = testing.make_mock_fixture(