django-constance/tests/storage.py

98 lines
4.3 KiB
Python
Raw Normal View History

from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
2010-09-03 12:38:43 +00:00
from decimal import Decimal
2016-09-14 17:21:16 +00:00
from constance import settings
2016-09-14 17:21:16 +00:00
from constance.base import Config
2010-08-25 12:55:01 +00:00
class StorageTestsMixin:
2014-11-21 15:37:12 +00:00
def setUp(self):
self.config = Config()
super().setUp()
2014-11-21 15:37:12 +00:00
2010-08-25 12:55:01 +00:00
def test_store(self):
2014-11-21 15:37:12 +00:00
self.assertEqual(self.config.INT_VALUE, 1)
self.assertEqual(self.config.BOOL_VALUE, True)
self.assertEqual(self.config.STRING_VALUE, 'Hello world')
self.assertEqual(self.config.DECIMAL_VALUE, Decimal('0.1'))
self.assertEqual(self.config.DATETIME_VALUE, datetime(2010, 8, 23, 11, 29, 24))
self.assertEqual(self.config.FLOAT_VALUE, 3.1415926536)
self.assertEqual(self.config.DATE_VALUE, date(2010, 12, 24))
self.assertEqual(self.config.TIME_VALUE, time(23, 59, 59))
self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=1, hours=2, minutes=3))
2015-06-14 15:25:56 +00:00
self.assertEqual(self.config.CHOICE_VALUE, 'yes')
self.assertEqual(self.config.EMAIL_VALUE, 'test@example.com')
2010-08-25 12:55:01 +00:00
# set values
2014-11-21 15:37:12 +00:00
self.config.INT_VALUE = 100
self.config.BOOL_VALUE = False
self.config.STRING_VALUE = 'Beware the weeping angel'
self.config.DECIMAL_VALUE = Decimal('1.2')
self.config.DATETIME_VALUE = datetime(1977, 10, 2)
self.config.FLOAT_VALUE = 2.718281845905
self.config.DATE_VALUE = date(2001, 12, 20)
self.config.TIME_VALUE = time(1, 59, 0)
self.config.TIMEDELTA_VALUE = timedelta(days=2, hours=3, minutes=4)
2015-06-14 15:25:56 +00:00
self.config.CHOICE_VALUE = 'no'
self.config.EMAIL_VALUE = 'foo@bar.com'
2010-08-25 12:55:01 +00:00
# read again
2014-11-21 15:37:12 +00:00
self.assertEqual(self.config.INT_VALUE, 100)
self.assertEqual(self.config.BOOL_VALUE, False)
self.assertEqual(self.config.STRING_VALUE, 'Beware the weeping angel')
self.assertEqual(self.config.DECIMAL_VALUE, Decimal('1.2'))
self.assertEqual(self.config.DATETIME_VALUE, datetime(1977, 10, 2))
self.assertEqual(self.config.FLOAT_VALUE, 2.718281845905)
self.assertEqual(self.config.DATE_VALUE, date(2001, 12, 20))
self.assertEqual(self.config.TIME_VALUE, time(1, 59, 0))
self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=2, hours=3, minutes=4))
2015-06-14 15:25:56 +00:00
self.assertEqual(self.config.CHOICE_VALUE, 'no')
self.assertEqual(self.config.EMAIL_VALUE, 'foo@bar.com')
2010-08-25 12:55:01 +00:00
def test_nonexistent(self):
try:
2014-11-21 15:37:12 +00:00
self.config.NON_EXISTENT
2013-04-12 15:25:11 +00:00
except Exception as e:
2013-04-12 15:34:48 +00:00
self.assertEqual(type(e), AttributeError)
2010-08-25 12:55:01 +00:00
try:
2014-11-21 15:37:12 +00:00
self.config.NON_EXISTENT = 1
2013-04-12 15:25:11 +00:00
except Exception as e:
2013-04-12 15:34:48 +00:00
self.assertEqual(type(e), AttributeError)
def test_missing_values(self):
# set some values and leave out others
2014-11-21 15:37:12 +00:00
self.config.BOOL_VALUE = False
self.config.DECIMAL_VALUE = Decimal('1.2')
self.config.DATETIME_VALUE = datetime(1977, 10, 2)
self.config.DATE_VALUE = date(2001, 12, 20)
self.config.TIME_VALUE = time(1, 59, 0)
2014-11-21 15:37:12 +00:00
self.assertEqual(self.config.INT_VALUE, 1) # this should be the default value
self.assertEqual(self.config.BOOL_VALUE, False)
self.assertEqual(self.config.STRING_VALUE, 'Hello world') # this should be the default value
self.assertEqual(self.config.DECIMAL_VALUE, Decimal('1.2'))
self.assertEqual(self.config.DATETIME_VALUE, datetime(1977, 10, 2))
self.assertEqual(self.config.FLOAT_VALUE, 3.1415926536) # this should be the default value
self.assertEqual(self.config.DATE_VALUE, date(2001, 12, 20))
self.assertEqual(self.config.TIME_VALUE, time(1, 59, 0))
self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=1, hours=2, minutes=3))
def test_backend_retrieves_multiple_values(self):
# Check corner cases such as falsy values
self.config.INT_VALUE = 0
self.config.BOOL_VALUE = False
self.config.STRING_VALUE = ''
values = dict(self.config._backend.mget(settings.CONFIG))
self.assertEqual(values['INT_VALUE'], 0)
self.assertEqual(values['BOOL_VALUE'], False)
self.assertEqual(values['STRING_VALUE'], '')
def test_backend_does_not_return_none_values(self):
result = dict(self.config._backend.mget(settings.CONFIG))
self.assertEqual(result, {})