From 9ea5c28b7a3bb74cebd923353b9e4c780e658d74 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sun, 26 Jun 2011 14:45:19 -0500 Subject: Celery wasn't really being properly connected during tests. Lots of fixes to do this. - setup_celery_from_config no longer responsible for checking 'celery_setup_elsewhere'; that's the app's job. (This was a problem because more than the app was relying on using this function) - Allow us to specifically set the config file we're setting up celery from with setup_self - Set up celery_always_eager. This is something we strongly want while doing tests. - Instead of setting up the app in the get_test_app method, let's set that up simply by importing from_tests, which should itself up via from_celery being the environment variable being set. --- mediagoblin/tests/test_mgoblin_app.ini | 7 +++++-- mediagoblin/tests/tools.py | 15 ++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) (limited to 'mediagoblin/tests') diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini index 94eafb5a..e022d47b 100644 --- a/mediagoblin/tests/test_mgoblin_app.ini +++ b/mediagoblin/tests/test_mgoblin_app.ini @@ -7,6 +7,9 @@ email_sender_address = "notice@mediagoblin.example.org" email_debug_mode = true db_name = __mediagoblin_tests__ -# Celery shouldn't be set up by the paste app factory as it's set up -# elsewhere +# Celery shouldn't be set up by the application as it's setup via +# mediagoblin.celery_setup.from_celery celery_setup_elsewhere = true + +[celery] +celery_always_eager = true diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py index ebb5f1b5..64f773f0 100644 --- a/mediagoblin/tests/tools.py +++ b/mediagoblin/tests/tools.py @@ -21,9 +21,8 @@ import os, shutil from paste.deploy import loadapp from webtest import TestApp -from mediagoblin import util, mg_globals +from mediagoblin import util from mediagoblin.config import read_mediagoblin_config -from mediagoblin.celery_setup import setup_celery_from_config from mediagoblin.decorators import _make_safe from mediagoblin.db.open import setup_connection_and_db_from_config @@ -36,7 +35,6 @@ TEST_APP_CONFIG = pkg_resources.resource_filename( TEST_USER_DEV = pkg_resources.resource_filename( 'mediagoblin.tests', 'test_user_dev') MGOBLIN_APP = None -CELERY_SETUP = False USER_DEV_DIRECTORIES_TO_SETUP = [ 'media/public', 'media/queue', @@ -60,8 +58,10 @@ def suicide_if_bad_celery_environ(): def get_test_app(dump_old_app=True): suicide_if_bad_celery_environ() + # Leave this imported as it sets up celery. + from mediagoblin.celery_setup import from_tests + global MGOBLIN_APP - global CELERY_SETUP # Just return the old app if that exists and it's okay to set up # and return @@ -103,13 +103,6 @@ def get_test_app(dump_old_app=True): app = TestApp(test_app) MGOBLIN_APP = app - # setup celery - if not CELERY_SETUP: - setup_celery_from_config( - mg_globals.app_config, mg_globals.global_config, - set_environ=True) - CELERY_SETUP = True - return app -- cgit v1.2.3 From 9f094beaafa2b5cefcd1812b692421cb0e1718e6 Mon Sep 17 00:00:00 2001 From: Caleb Forbes Davis V Date: Tue, 28 Jun 2011 02:35:44 -0500 Subject: adds message queue unit testing --- mediagoblin/tests/test_messages.py | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 mediagoblin/tests/test_messages.py (limited to 'mediagoblin/tests') diff --git a/mediagoblin/tests/test_messages.py b/mediagoblin/tests/test_messages.py new file mode 100644 index 00000000..4cd9381a --- /dev/null +++ b/mediagoblin/tests/test_messages.py @@ -0,0 +1,44 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011 Free Software Foundation, Inc +# +# 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 . + +from mediagoblin.messages import fetch_messages, add_message +from mediagoblin.tests.tools import setup_fresh_app +from mediagoblin import util + + +@setup_fresh_app +def test_messages(test_app): + """ + Added messages should show up in the request.session, + fetched messages should be the same as the added ones, + and fetching should clear the message list. + """ + # Aquire a request object + test_app.get('/') + context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html'] + request = context['request'] + + # The message queue should be empty + assert request.session.get('messages', []) == [] + + # Adding a message should modify the session accordingly + add_message(request, 'herp_derp', 'First!') + test_msg_queue = [{'text': 'First!', 'level': 'herp_derp'}] + assert request.session['messages'] == test_msg_queue + + # fetch_messages should return and empty the queue + assert fetch_messages(request) == test_msg_queue + assert request.session.get('messages') == [] -- cgit v1.2.3