This commit is contained in:
Ales Zoulek 2010-08-25 14:55:01 +02:00
parent f616fd82c7
commit c36bf65ab1
11 changed files with 120 additions and 31 deletions

View file

@ -23,7 +23,10 @@ class Config(object):
super(Config, self).__setattr__('_rd', redis.Redis(**settings.CONSTANCE_CONNECTION))
def __getattr__(self, key):
default, help_text = settings.CONSTANCE_CONFIG[key]
try:
default, help_text = settings.CONSTANCE_CONFIG[key]
except KeyError, e:
raise AttributeError(key)
result = self._rd.get("%s%s" % (self._prefix, key))
if result is None:
result = default
@ -32,6 +35,8 @@ class Config(object):
return loads(result)
def __setattr__(self, key, value):
if key not in settings.CONSTANCE_CONFIG:
raise AttributeError(key)
self._rd.set("%s%s" % (self._prefix, key), dumps(value))
def __dir__(self):

View file

@ -1 +0,0 @@
from constance.tests.test_config import *

View file

@ -1,21 +0,0 @@
from django.test import TestCase
from django.conf import settings
from constance import config
class TestStorage(TestCase):
def test_store(self):
# read defaults
self.assertEquals(config.INT_VALUE, 1)
self.assertEquals(config.BOOL_VALUE, True)
self.assertEquals(config.STRING_VALUE, 'Hello world')
config.INT_VALUE = 100
config.BOOL_VALUE = False
self.assertEquals(config.INT_VALUE, 100)
self.assertEquals(config.BOOL_VALUE, False)
self.assertEquals(config.STRING_VALUE, 'Hello world')

View file

@ -1,7 +0,0 @@
CONSTANCE_CONFIG = {
'INT_VALUE': (1, 'some int'),
'BOOL_VALUE': (True, 'true or false'),
'STRING_VALUE': ('Hello world', 'greetings'),
}
CONSTANCE_CONNECTION_CLASS = 'redis_mockup.Connection'

1
tests/__init__.py Normal file
View file

@ -0,0 +1 @@

0
tests/models.py Normal file
View file

View file

@ -1,4 +1,3 @@
#!/usr/bin/env python
"""Borrowed from Carl Meyer's django-adminfiles."""
@ -11,6 +10,7 @@ os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.test_settings'
from django.test.simple import run_tests
def runtests():
failures = run_tests(['tests'], verbosity=1, interactive=True)
sys.exit(failures)

49
tests/test_config.py.orig Normal file
View file

@ -0,0 +1,49 @@
from django.test import TestCase
from django.conf import settings
from constance import config
class TestStorage(TestCase):
def setUp(self):
self.old_config = getattr(settings, 'CONSTANCE_CONFIG', None)
settings.CONSTANCE_CONFIG = {
'INT_VALUE': (1, 'some int'),
'BOOL_VALUE': (True, 'true or false'),
'STRING_VALUE': ('Hello world', 'greetings'),
}
config._rd.clear()
def test_store(self):
# read defaults
self.assertEquals(config.INT_VALUE, 1)
self.assertEquals(config.BOOL_VALUE, True)
self.assertEquals(config.STRING_VALUE, 'Hello world')
# set values
config.INT_VALUE = 100
config.BOOL_VALUE = False
# read again
self.assertEquals(config.INT_VALUE, 100)
self.assertEquals(config.BOOL_VALUE, False)
self.assertEquals(config.STRING_VALUE, 'Hello world')
def test_nonexistent(self):
try:
config.NON_EXISTENT
except Exception, e:
pass
self.assertEquals(type(e), AttributeError)
try:
config.NON_EXISTENT = 1
except Exception, e:
pass
self.assertEquals(type(e), AttributeError)
def tearDown(self):
if self.old_config:
settings.CONSTANCE_CONFIG = self.old_config

14
tests/test_settings.py Normal file
View file

@ -0,0 +1,14 @@
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
}
}
CONSTANCE_CONNECTION_CLASS = 'tests.redis_mockup.Connection'
INSTALLED_APPS = (
'tests',
'constance',
)

49
tests/tests.py Normal file
View file

@ -0,0 +1,49 @@
from django.test import TestCase
from django.conf import settings
from constance import config
class TestStorage(TestCase):
def setUp(self):
self.old_config = getattr(settings, 'CONSTANCE_CONFIG', None)
settings.CONSTANCE_CONFIG = {
'INT_VALUE': (1, 'some int'),
'BOOL_VALUE': (True, 'true or false'),
'STRING_VALUE': ('Hello world', 'greetings'),
}
config._rd.clear()
def test_store(self):
# read defaults
self.assertEquals(config.INT_VALUE, 1)
self.assertEquals(config.BOOL_VALUE, True)
self.assertEquals(config.STRING_VALUE, 'Hello world')
# set values
config.INT_VALUE = 100
config.BOOL_VALUE = False
# read again
self.assertEquals(config.INT_VALUE, 100)
self.assertEquals(config.BOOL_VALUE, False)
self.assertEquals(config.STRING_VALUE, 'Hello world')
def test_nonexistent(self):
try:
config.NON_EXISTENT
except Exception, e:
pass
self.assertEquals(type(e), AttributeError)
try:
config.NON_EXISTENT = 1
except Exception, e:
pass
self.assertEquals(type(e), AttributeError)
def tearDown(self):
if self.old_config:
settings.CONSTANCE_CONFIG = self.old_config