ConfigurationModels can be managed using the admin site. They are append-only, and track the user who is making the change, and the time that the change was made. The configuration is stored in the database, and cached for performance. [LMS-1220]
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""
|
|
Tests of ConfigurationModel
|
|
"""
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.db import models
|
|
from django.test import TestCase
|
|
|
|
from freezegun import freeze_time
|
|
|
|
from mock import patch
|
|
from config_models.models import ConfigurationModel
|
|
|
|
|
|
class ExampleConfig(ConfigurationModel):
|
|
"""
|
|
Test model for testing ``ConfigurationModels``.
|
|
"""
|
|
cache_timeout = 300
|
|
|
|
string_field = models.TextField()
|
|
int_field = models.IntegerField(default=10)
|
|
|
|
|
|
@patch('config_models.models.cache')
|
|
class ConfigurationModelTests(TestCase):
|
|
"""
|
|
Tests of ConfigurationModel
|
|
"""
|
|
def setUp(self):
|
|
self.user = User()
|
|
self.user.save()
|
|
|
|
def test_cache_deleted_on_save(self, mock_cache):
|
|
ExampleConfig(changed_by=self.user).save()
|
|
mock_cache.delete.assert_called_with(ExampleConfig.cache_key_name())
|
|
|
|
def test_cache_key_name(self, _mock_cache):
|
|
self.assertEquals(ExampleConfig.cache_key_name(), 'configuration/ExampleConfig/current')
|
|
|
|
def test_no_config_empty_cache(self, mock_cache):
|
|
mock_cache.get.return_value = None
|
|
|
|
current = ExampleConfig.current()
|
|
self.assertEquals(current.int_field, 10)
|
|
self.assertEquals(current.string_field, '')
|
|
mock_cache.set.assert_called_with(ExampleConfig.cache_key_name(), current, 300)
|
|
|
|
def test_no_config_full_cache(self, mock_cache):
|
|
current = ExampleConfig.current()
|
|
self.assertEquals(current, mock_cache.get.return_value)
|
|
|
|
def test_config_ordering(self, mock_cache):
|
|
mock_cache.get.return_value = None
|
|
|
|
with freeze_time('2012-01-01'):
|
|
first = ExampleConfig(changed_by=self.user)
|
|
first.string_field = 'first'
|
|
first.save()
|
|
|
|
second = ExampleConfig(changed_by=self.user)
|
|
second.string_field = 'second'
|
|
second.save()
|
|
|
|
self.assertEquals(ExampleConfig.current().string_field, 'second')
|
|
|
|
def test_cache_set(self, mock_cache):
|
|
mock_cache.get.return_value = None
|
|
|
|
first = ExampleConfig(changed_by=self.user)
|
|
first.string_field = 'first'
|
|
first.save()
|
|
|
|
ExampleConfig.current()
|
|
|
|
mock_cache.set.assert_called_with(ExampleConfig.cache_key_name(), first, 300)
|