view pylons_app/tests/__init__.py @ 483:a9e50dce3081 celery

Removed config names from whoosh and celery, celery is now configured based on the config name it's using on celeryconfig. And whoosh uses it's own logger configured just for whoosh Test creates a fresh whoosh index now, for more accurate checks fixed tests for searching
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 17 Sep 2010 22:54:30 +0200
parents 6b934c9607e7
children fefffd6fd5f4
line wrap: on
line source

"""Pylons application test package

This package assumes the Pylons environment is already loaded, such as
when this script is imported from the `nosetests --with-pylons=test.ini`
command.

This module initializes the application via ``websetup`` (`paster
setup-app`) and provides the base testing objects.
"""
from unittest import TestCase

from paste.deploy import loadapp
from paste.script.appinstall import SetupCommand
from pylons import config, url
from routes.util import URLGenerator
from webtest import TestApp
import os
from pylons_app.model import meta
from pylons_app.lib.indexers import IDX_LOCATION
import logging
import shutil
log = logging.getLogger(__name__) 

import pylons.test

__all__ = ['environ', 'url', 'TestController']

# Invoke websetup with the current config file
#SetupCommand('setup-app').run([pylons.test.pylonsapp.config['__file__']])
def create_index(repo_location, full_index):
    from pylons_app.lib.indexers import daemon
    from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon
    from pylons_app.lib.indexers.pidlock import DaemonLock, LockHeld
    
    try:
        l = DaemonLock()
        WhooshIndexingDaemon(repo_location=repo_location)\
            .run(full_index=full_index)
        l.release()
    except LockHeld:
        pass    
    
if os.path.exists(IDX_LOCATION):
    shutil.rmtree(IDX_LOCATION)
    
create_index('/tmp/*', True)    

environ = {}

class TestController(TestCase):

    def __init__(self, *args, **kwargs):
        wsgiapp = pylons.test.pylonsapp
        config = wsgiapp.config
        self.app = TestApp(wsgiapp)
        url._push_object(URLGenerator(config['routes.map'], environ))
        self.sa = meta.Session

        TestCase.__init__(self, *args, **kwargs)

    
    def log_user(self):
        response = self.app.post(url(controller='login', action='index'),
                                 {'username':'test_admin',
                                  'password':'test'})
        assert response.status == '302 Found', 'Wrong response code from login got %s' % response.status
        assert response.session['hg_app_user'].username == 'test_admin', 'wrong logged in user'
        return response.follow()