Merge branch '623_context_hooks'
This commit is contained in:
26
mediagoblin/tests/appconfig_context_modified.ini
Normal file
26
mediagoblin/tests/appconfig_context_modified.ini
Normal file
@@ -0,0 +1,26 @@
|
||||
[mediagoblin]
|
||||
direct_remote_path = /test_static/
|
||||
email_sender_address = "notice@mediagoblin.example.org"
|
||||
email_debug_mode = true
|
||||
|
||||
# TODO: Switch to using an in-memory database
|
||||
sql_engine = "sqlite:///%(here)s/test_user_dev/mediagoblin.db"
|
||||
|
||||
# Celery shouldn't be set up by the application as it's setup via
|
||||
# mediagoblin.init.celery.from_celery
|
||||
celery_setup_elsewhere = true
|
||||
|
||||
[storage:publicstore]
|
||||
base_dir = %(here)s/test_user_dev/media/public
|
||||
base_url = /mgoblin_media/
|
||||
|
||||
[storage:queuestore]
|
||||
base_dir = %(here)s/test_user_dev/media/queue
|
||||
|
||||
[celery]
|
||||
CELERY_ALWAYS_EAGER = true
|
||||
CELERY_RESULT_DBURI = "sqlite:///%(here)s/test_user_dev/celery.db"
|
||||
BROKER_HOST = "sqlite:///%(here)s/test_user_dev/kombu.db"
|
||||
|
||||
[plugins]
|
||||
[[mediagoblin.tests.testplugins.modify_context]]
|
||||
@@ -25,6 +25,7 @@ from mediagoblin import mg_globals
|
||||
from mediagoblin.init.plugins import setup_plugins
|
||||
from mediagoblin.init.config import read_mediagoblin_config
|
||||
from mediagoblin.tools import pluginapi
|
||||
from mediagoblin.tests.tools import get_app
|
||||
|
||||
|
||||
def with_cleanup(*modules_to_delete):
|
||||
@@ -323,3 +324,37 @@ def test_plugin_config():
|
||||
# the callables thing shouldn't really have anything though.
|
||||
assert len(config['plugins'][
|
||||
'mediagoblin.tests.testplugins.callables1']) == 0
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def context_modified_app(request):
|
||||
"""
|
||||
Get a MediaGoblin app fixture using appconfig_context_modified.ini
|
||||
"""
|
||||
return get_app(
|
||||
request,
|
||||
mgoblin_config=pkg_resources.resource_filename(
|
||||
'mediagoblin.tests', 'appconfig_context_modified.ini'))
|
||||
|
||||
|
||||
def test_modify_context(context_modified_app):
|
||||
"""
|
||||
Test that we can modify both the view/template specific and
|
||||
global contexts for templates.
|
||||
"""
|
||||
# Specific thing passed into a page
|
||||
result = context_modified_app.get("/modify_context/specific/")
|
||||
assert result.body.strip() == """Specific page!
|
||||
|
||||
specific thing: in yer specificpage
|
||||
global thing: globally appended!
|
||||
something: orother
|
||||
doubleme: happyhappy"""
|
||||
|
||||
# General test, should have global context variable only
|
||||
result = context_modified_app.get("/modify_context/")
|
||||
assert result.body.strip() == """General page!
|
||||
|
||||
global thing: globally appended!
|
||||
lol: cats
|
||||
doubleme: joyjoy"""
|
||||
|
||||
55
mediagoblin/tests/testplugins/modify_context/__init__.py
Normal file
55
mediagoblin/tests/testplugins/modify_context/__init__.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from mediagoblin.tools import pluginapi
|
||||
import pkg_resources
|
||||
|
||||
|
||||
def append_to_specific_context(context):
|
||||
context['specific_page_append'] = 'in yer specificpage'
|
||||
return context
|
||||
|
||||
def append_to_global_context(context):
|
||||
context['global_append'] = 'globally appended!'
|
||||
return context
|
||||
|
||||
def double_doubleme(context):
|
||||
if 'doubleme' in context:
|
||||
context['doubleme'] = context['doubleme'] * 2
|
||||
return context
|
||||
|
||||
|
||||
def setup_plugin():
|
||||
routes = [
|
||||
('modify_context.specific_page',
|
||||
'/modify_context/specific/',
|
||||
'mediagoblin.tests.testplugins.modify_context.views:specific'),
|
||||
('modify_context.general_page',
|
||||
'/modify_context/',
|
||||
'mediagoblin.tests.testplugins.modify_context.views:general')]
|
||||
|
||||
pluginapi.register_routes(routes)
|
||||
pluginapi.register_template_path(
|
||||
pkg_resources.resource_filename(
|
||||
'mediagoblin.tests.testplugins.modify_context', 'templates'))
|
||||
|
||||
|
||||
hooks = {
|
||||
'setup': setup_plugin,
|
||||
('modify_context.specific_page',
|
||||
'contextplugin/specific.html'): append_to_specific_context,
|
||||
'template_global_context': append_to_global_context,
|
||||
'template_context_prerender': double_doubleme}
|
||||
@@ -0,0 +1,5 @@
|
||||
General page!
|
||||
|
||||
global thing: {{ global_append }}
|
||||
lol: {{ lol }}
|
||||
doubleme: {{ doubleme }}
|
||||
@@ -0,0 +1,6 @@
|
||||
Specific page!
|
||||
|
||||
specific thing: {{ specific_page_append }}
|
||||
global thing: {{ global_append }}
|
||||
something: {{ something }}
|
||||
doubleme: {{ doubleme }}
|
||||
33
mediagoblin/tests/testplugins/modify_context/views.py
Normal file
33
mediagoblin/tests/testplugins/modify_context/views.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from mediagoblin.tools.response import render_to_response
|
||||
|
||||
|
||||
def specific(request):
|
||||
return render_to_response(
|
||||
request,
|
||||
'contextplugin/specific.html',
|
||||
{"something": "orother",
|
||||
"doubleme": "happy"})
|
||||
|
||||
|
||||
def general(request):
|
||||
return render_to_response(
|
||||
request,
|
||||
'contextplugin/general.html',
|
||||
{"lol": "cats",
|
||||
"doubleme": "joy"})
|
||||
Reference in New Issue
Block a user