mirror of
https://github.com/jazzband/django-constance.git
synced 2026-03-16 22:40:24 +00:00
Refactored tests to use django-discover-runner and not an own testproject anymore.
This commit is contained in:
parent
a8b158ad1c
commit
e144e4336f
16 changed files with 92 additions and 130 deletions
2
setup.py
2
setup.py
|
|
@ -34,5 +34,5 @@ setup(
|
|||
packages=find_packages(exclude=['tests']),
|
||||
include_package_data=True,
|
||||
test_suite='tests.runtests.main',
|
||||
test_requires=['django-discover-runner'],
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,15 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""Borrowed from Carl Meyer's django-adminfiles."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from django.core.management import call_command
|
||||
|
||||
testapp_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
constance_dir = os.path.dirname(testapp_dir)
|
||||
sys.path.insert(0, constance_dir)
|
||||
sys.path.insert(0, testapp_dir)
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
|
||||
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'
|
||||
|
||||
from django.test.simple import DjangoTestSuiteRunner
|
||||
|
||||
def main():
|
||||
runner = DjangoTestSuiteRunner()
|
||||
failures = runner.run_tests(['test_app'], verbosity=1, interactive=True)
|
||||
sys.exit(failures)
|
||||
result = call_command('test', 'tests', verbosity=2)
|
||||
sys.exit(result)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -1,13 +1,21 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
|
||||
import os
|
||||
from datetime import datetime, date, time
|
||||
from decimal import Decimal
|
||||
|
||||
# using the parent directory as the base for the test discovery
|
||||
TEST_DISCOVER_TOP_LEVEL = os.path.join(os.path.dirname(__file__), '..')
|
||||
|
||||
TEST_RUNNER = 'discover_runner.DiscoverRunner'
|
||||
|
||||
SECRET_KEY = 'cheese'
|
||||
|
||||
DATABASE_ENGINE = 'sqlite3'
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': ':memory:',
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -16,16 +24,15 @@ INSTALLED_APPS = (
|
|||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.admin',
|
||||
'south',
|
||||
|
||||
'constance',
|
||||
'constance.backends.database',
|
||||
|
||||
'testproject.test_app',
|
||||
)
|
||||
|
||||
ROOT_URLCONF = 'testproject.urls'
|
||||
ROOT_URLCONF = 'tests.urls'
|
||||
|
||||
CONSTANCE_CONNECTION_CLASS = 'testproject.test_app.redis_mockup.Connection'
|
||||
CONSTANCE_CONNECTION_CLASS = 'tests.redis_mockup.Connection'
|
||||
|
||||
CONSTANCE_CONFIG = {
|
||||
'INT_VALUE': (1, 'some int'),
|
||||
|
|
@ -1,20 +1,8 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
from datetime import datetime, date, time
|
||||
from decimal import Decimal
|
||||
|
||||
from django.test import TestCase
|
||||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from constance import settings
|
||||
from constance.admin import Config
|
||||
|
||||
# Use django RequestFactory later on
|
||||
from testproject.test_app.tests.helpers import FakeRequest
|
||||
|
||||
|
||||
class TestStorage(object):
|
||||
|
||||
|
|
@ -71,24 +59,7 @@ class TestStorage(object):
|
|||
pass
|
||||
self.assertEquals(type(e), AttributeError)
|
||||
|
||||
class TestRedis(TestCase, TestStorage):
|
||||
|
||||
def setUp(self):
|
||||
self.old_backend = settings.BACKEND
|
||||
settings.BACKEND = 'constance.backends.redisd.RedisBackend'
|
||||
del sys.modules['constance']
|
||||
from constance import config
|
||||
config._backend._rd.clear()
|
||||
|
||||
def tearDown(self):
|
||||
del sys.modules['constance']
|
||||
from constance import config
|
||||
config._backend._rd.clear()
|
||||
settings.BACKEND = self.old_backend
|
||||
import constance
|
||||
constance.config = Config()
|
||||
|
||||
def testMissingValues(self):
|
||||
def test_missing_values(self):
|
||||
from constance import config
|
||||
|
||||
# set some values and leave out others
|
||||
|
|
@ -110,30 +81,3 @@ class TestRedis(TestCase, TestStorage):
|
|||
self.assertEquals(config.FLOAT_VALUE, 3.1415926536) # this should be the default value
|
||||
self.assertEquals(config.DATE_VALUE, date(2001, 12, 20))
|
||||
self.assertEquals(config.TIME_VALUE, time(1, 59, 0))
|
||||
|
||||
|
||||
class TestDatabase(TestCase, TestStorage):
|
||||
|
||||
def setUp(self):
|
||||
self.old_backend = settings.BACKEND
|
||||
settings.BACKEND = 'constance.backends.database.DatabaseBackend'
|
||||
|
||||
def tearDown(self):
|
||||
del sys.modules['constance']
|
||||
settings.BACKEND = self.old_backend
|
||||
import constance
|
||||
constance.config = Config()
|
||||
|
||||
class TestAdmin(TestCase):
|
||||
model = Config
|
||||
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_superuser('admin', 'nimda', 'a@a.cz')
|
||||
self.options = admin.site._registry[self.model]
|
||||
self.fake_request = FakeRequest(user=self.user)
|
||||
self.client.login(username=self.user, password='nimda')
|
||||
|
||||
def test_changelist(self):
|
||||
response = self.options.changelist_view(self.fake_request, {})
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
20
tests/test_admin.py
Normal file
20
tests/test_admin.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
from django.test import TestCase, RequestFactory
|
||||
|
||||
from constance.admin import Config
|
||||
|
||||
|
||||
class TestAdmin(TestCase):
|
||||
model = Config
|
||||
|
||||
def setUp(self):
|
||||
self.rf = RequestFactory()
|
||||
self.user = User.objects.create_superuser('admin', 'nimda', 'a@a.cz')
|
||||
self.options = admin.site._registry[self.model]
|
||||
self.client.login(username=self.user, password='nimda')
|
||||
|
||||
def test_changelist(self):
|
||||
request = self.rf.get('/admin/constance/config/')
|
||||
response = self.options.changelist_view(request, {})
|
||||
self.assertEquals(response.status_code, 200)
|
||||
21
tests/test_database.py
Normal file
21
tests/test_database.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import sys
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from constance.config import Config
|
||||
from constance import settings
|
||||
|
||||
from .storage import TestStorage
|
||||
|
||||
|
||||
class TestDatabase(TestCase, TestStorage):
|
||||
|
||||
def setUp(self):
|
||||
self.old_backend = settings.BACKEND
|
||||
settings.BACKEND = 'constance.backends.database.DatabaseBackend'
|
||||
|
||||
def tearDown(self):
|
||||
del sys.modules['constance']
|
||||
settings.BACKEND = self.old_backend
|
||||
import constance
|
||||
constance.config = Config()
|
||||
26
tests/test_redis.py
Normal file
26
tests/test_redis.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import sys
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from constance.config import Config
|
||||
from constance import settings
|
||||
|
||||
from .storage import TestStorage
|
||||
|
||||
|
||||
class TestRedis(TestCase, TestStorage):
|
||||
|
||||
def setUp(self):
|
||||
self.old_backend = settings.BACKEND
|
||||
settings.BACKEND = 'constance.backends.redisd.RedisBackend'
|
||||
del sys.modules['constance']
|
||||
from constance import config
|
||||
config._backend._rd.clear()
|
||||
|
||||
def tearDown(self):
|
||||
del sys.modules['constance']
|
||||
from constance import config
|
||||
config._backend._rd.clear()
|
||||
settings.BACKEND = self.old_backend
|
||||
import constance
|
||||
constance.config = Config()
|
||||
|
|
@ -1 +0,0 @@
|
|||
from testproject.test_app.tests.test_config import *
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
import datetime
|
||||
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
|
||||
|
||||
|
||||
class FakeRequest(WSGIRequest):
|
||||
|
||||
def __init__(self, user=None, meta=None, environ=None, cookies=None):
|
||||
if not environ:
|
||||
environ = {
|
||||
'PATH_INFO': '/',
|
||||
'QUERY_STRING': '',
|
||||
'REMOTE_ADDR': '127.0.0.1',
|
||||
'REQUEST_METHOD': 'GET',
|
||||
'SCRIPT_NAME': '',
|
||||
'SERVER_NAME': 'testserver',
|
||||
'SERVER_PORT': '80',
|
||||
'SERVER_PROTOCOL': 'HTTP/1.1',
|
||||
'wsgi.version': (1,0),
|
||||
'wsgi.url_scheme': 'http',
|
||||
'wsgi.errors': [],
|
||||
'wsgi.multiprocess': True,
|
||||
'wsgi.multithread': False,
|
||||
'wsgi.run_once': False,
|
||||
'wsgi.input': None,
|
||||
}
|
||||
super(FakeRequest, self).__init__(environ)
|
||||
if user:
|
||||
self.user = user
|
||||
if meta:
|
||||
self.META.update(meta)
|
||||
if cookies:
|
||||
self.COOKIES.update(cookies)
|
||||
self.xnow = datetime.datetime.now()
|
||||
|
||||
@classmethod
|
||||
def from_test_response(cls, response, *args, **kwargs):
|
||||
return cls(environ=response.request, *args, **kwargs)
|
||||
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from django.conf.urls.defaults import patterns, include
|
||||
|
||||
urlpatterns = patterns('',
|
||||
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
|
||||
# to INSTALLED_APPS to enable admin documentation:
|
||||
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
|
||||
(r'^admin/', include(admin.site.urls)),
|
||||
)
|
||||
|
||||
6
tests/urls.py
Normal file
6
tests/urls.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
from django.contrib import admin
|
||||
from django.conf.urls.defaults import patterns, include
|
||||
|
||||
urlpatterns = patterns('',
|
||||
(r'^admin/', include(admin.site.urls)),
|
||||
)
|
||||
Loading…
Reference in a new issue