-# Copyright (C) 2018, 2020 The Meme Factory, Inc. http://www.karlpinc.com/
+# Copyright (C) 2018, 2020, 2024 The Meme Factory, Inc.
+# http://www.karlpinc.com/
# This file is part of PGWUI_Common.
#
import pgwui_common.views.page_views
+DEFAULT_PGWUI_CLIENT_ENCODING = 'auto'
+
def configure_page(config, pgwui_settings, page_name):
'''Setup route and view for a file given in pgwui."page_name" setting,
attr=page_name, route_name=route_name)
-def configure_pages(config):
+def configure_pages(config, pgwui_settings):
'''Setup routes and views for "pgwui.xxxx_page" settings
'''
- pgwui_settings = config.get_settings()['pgwui']
configure_page(config, pgwui_settings, 'home_page')
configure_page(config, pgwui_settings, 'menu_page')
+def establish_settings(config):
+ '''Add defaults into settings when they are not present
+ and pre-process setting values as needed
+ '''
+ pgwui_settings = config.get_settings()['pgwui']
+ pgwui_settings.setdefault(
+ 'client_encoding', DEFAULT_PGWUI_CLIENT_ENCODING)
+ configure_pages(config, pgwui_settings)
+
+
def includeme(config):
'''Pyramid configuration for PGWUI_Common
'''
'static/pgwui_common',
'pgwui_common:static/',
cache_max_age=3600)
- configure_pages(config)
+ establish_settings(config)
config.scan()
-# Copyright (C) 2018, 2020, 2021 The Meme Factory, Inc.
+# Copyright (C) 2018, 2020, 2021, 2024 The Meme Factory, Inc.
# http://www.karlpinc.com/
# This file is part of PGWUI_Common.
'''
pgwui = 'pgwui'
pyramid_request_config.get_settings()['pgwui'] = pgwui
- pgwui_common.configure_pages(pyramid_request_config)
+ pgwui_common.configure_pages(pyramid_request_config, pgwui)
assert (set([call[0] for call in mock_configure_page.call_args_list])
== set([(pyramid_request_config, pgwui, 'home_page'),
pgwui_common, 'configure_pages')
+# establish_settings()
+@pytest.mark.unittest
+def test_establish_settings_check_defaults(
+ pyramid_request_config, mock_configure_pages):
+ '''Check that the defaults are set as expected
+ '''
+ pgwui = dict()
+ pyramid_request_config.get_settings()['pgwui'] = pgwui
+ pgwui_common.establish_settings(pyramid_request_config)
+
+ assert pgwui['client_encoding'] \
+ == pgwui_common.DEFAULT_PGWUI_CLIENT_ENCODING
+
+
+@pytest.mark.unittest
+def test_establish_settings_calls(
+ pyramid_request_config, mock_configure_pages):
+ '''Check that configure_pages() is called with the right args, once
+ '''
+ pgwui = dict()
+ pyramid_request_config.get_settings()['pgwui'] = pgwui
+ pgwui_common.establish_settings(pyramid_request_config)
+
+ assert ([call[0] for call in mock_configure_pages.call_args_list]
+ == [(pyramid_request_config, pgwui)])
+
+
+mock_establish_settings = testing.make_mock_fixture(
+ pgwui_common, 'establish_settings')
+
+
# includeme()
@pytest.mark.unittest
-def test_includeme_configurecalled(
- mock_add_static_view, mock_include, mock_configure_pages):
- '''Pyramid Configure() methods are called'''
+def test_includeme_establish_settings_called(
+ mock_add_static_view, mock_include, mock_establish_settings):
+ '''Pyramid Configure() methods and establish_settings are all called'''
with pyramid.testing.testConfig() as config:
mocked_include = mock_include(config)
mocked_add_static_view = mock_add_static_view(config)
pgwui_common.includeme(config)
assert mocked_include.call_count == 2
mocked_add_static_view.assert_called_once()
- mock_configure_pages.assert_called_once()
+ mock_establish_settings.assert_called_once()
# Integration tests