Establish default menu label
authorKarl O. Pinc <kop@karlpinc.com>
Thu, 27 Aug 2020 19:59:21 +0000 (14:59 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Sun, 30 Aug 2020 22:59:53 +0000 (17:59 -0500)
src/pgwui_upload/__init__.py
src/pgwui_upload/templates/upload.mak
tests/test___init__.py

index 167613a8b4f7a7b0c1471d3a17313412f90b7d4e..d38a3b757663669875ae7c3b8da29bb0e5244399 100644 (file)
 '''
 PGWUI_COMPONENT = 'pgwui_upload'
 DEFAULT_UPLOAD_ROUTE = '/upload'
+DEFAULT_UPLOAD_MENU_LABEL = 'upload -- Upload File Into Database'
+
+
+def init_menu(config):
+    '''Add default menu information into settings when they are not present
+    '''
+    settings = config.get_settings()
+    settings.setdefault('pgwui', dict())
+    settings['pgwui'].setdefault(PGWUI_COMPONENT, dict())
+    settings['pgwui'][PGWUI_COMPONENT].setdefault(
+        'menu_label', DEFAULT_UPLOAD_MENU_LABEL)
 
 
 def includeme(config):
     '''Pyramid configuration for PGWUI_Upload
     '''
+    init_menu(config)
     config.add_route(PGWUI_COMPONENT, DEFAULT_UPLOAD_ROUTE)
     config.scan()
index 35ffca9bfc84543b5fb3c29563e16a3cd40820f1..eb2414620858e2a7f40e19a21f4b9879b8587d7a 100644 (file)
@@ -36,7 +36,7 @@
 
 <%inherit file="${auth_base_mak}" />
 
-<%block name="title">upload -- Upload File Into Database</%block>
+<%block name="title">${pgwui['pgwui_upload']['menu_label']}</%block>
 <%block name="meta_keywords">
   <meta name="keywords"
         content="PGWUI generic upload" />
index b77e477592d72d35413bec61e65ab240a5c93373..a2e6bc10ac3589fc9d2c8fe6c1068fd053fc3b63 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 The Meme Factory, Inc.  http://www.karlpinc.com/
+# Copyright (C) 2019, 2020 The Meme Factory, Inc.  http://www.karlpinc.com/
 
 # This file is part of PGWUI_Upload.
 #
 
 # Karl O. Pinc <kop@karlpinc.com>
 
+import pyramid.testing
+
+import pgwui_upload.__init__ as pgwui_upload_init
+
+from pgwui_testing import testing
 
 # Activiate our pytest plugin
 pytest_plugins = ("pgwui",)
@@ -30,3 +35,60 @@ def test_pgwui_upload_is_pgwui_component(pgwui_component_entry_point):
     '''Ensure that pgwui_upload is a pgwui.component entry point
     '''
     assert pgwui_component_entry_point('pgwui_upload') is True
+
+
+# init_menu()
+
+def test_init_menu_default():
+    '''The settings get the module's default value when no settings exist
+    '''
+    with pyramid.testing.testConfig() as config:
+
+        pgwui_upload_init.init_menu(config)
+
+        new_settings = config.get_settings()
+    assert new_settings['pgwui']['pgwui_upload']['menu_label'] \
+        == pgwui_upload_init.DEFAULT_UPLOAD_MENU_LABEL
+
+
+def test_init_menu_no_default():
+    '''The settings keep their value when they exist
+    '''
+    test_menu_label = 'test label'
+
+    with pyramid.testing.testConfig() as config:
+        sample_settings = config.get_settings()
+
+        sample_settings['pgwui'] = dict()
+        sample_settings['pgwui']['pgwui_upload'] = dict()
+        sample_settings['pgwui']['pgwui_upload']['menu_label'] \
+            = test_menu_label
+
+        pgwui_upload_init.init_menu(config)
+
+        new_settings = config.get_settings()
+    assert new_settings['pgwui']['pgwui_upload']['menu_label'] \
+        == test_menu_label
+
+
+mock_init_menu = testing.make_mock_fixture(pgwui_upload_init, 'init_menu')
+
+
+# includeme()
+
+mock_add_route = testing.instance_method_mock_fixture('add_route')
+mock_scan = testing.instance_method_mock_fixture('scan')
+
+
+def test_includeme(mock_init_menu, mock_add_route, mock_scan):
+    '''init_menu, add_route, and scan are all called
+    '''
+    with pyramid.testing.testConfig() as config:
+        mocked_add_route = mock_add_route(config)
+        mocked_scan = mock_scan(config)
+
+        pgwui_upload_init.includeme(config)
+
+    mock_init_menu.assert_called_once()
+    mocked_add_route.assert_called_once()
+    mocked_scan.assert_called_once()