diff --git a/cms/djangoapps/contentstore/tests/test_core_caching.py b/cms/djangoapps/contentstore/tests/test_core_caching.py new file mode 100644 index 0000000000..0cb4a4930c --- /dev/null +++ b/cms/djangoapps/contentstore/tests/test_core_caching.py @@ -0,0 +1,38 @@ +from django.test.testcases import TestCase +from cache_toolbox.core import get_cached_content, set_cached_content, del_cached_content +from xmodule.modulestore import Location +from xmodule.contentstore.content import StaticContent + +class Content: + def __init__(self, location, content): + self.location = location + self.content = content + + def get_id(self): + return StaticContent.get_id_from_location(self.location) + +class CachingTestCase(TestCase): +# Tests for https://edx.lighthouseapp.com/projects/102637/tickets/112-updating-asset-does-not-refresh-the-cached-copy + unicodeLocation = Location(u'c4x', u'mitX', u'800', u'thumbnail', u'monsters.jpg') + # Note that some of the parts are strings instead of unicode strings + nonUnicodeLocation = Location('c4x', u'mitX', u'800', 'thumbnail', 'monsters.jpg') + mockAsset = Content(unicodeLocation, 'my content') + + def test_put_and_get(self): + set_cached_content(self.mockAsset) + self.assertEqual(self.mockAsset.content, get_cached_content(self.unicodeLocation).content, + 'should be stored in cache with unicodeLocation') + self.assertEqual(self.mockAsset.content, get_cached_content(self.nonUnicodeLocation).content, + 'should be stored in cache with nonUnicodeLocation') + + def test_delete(self): + set_cached_content(self.mockAsset) + del_cached_content(self.nonUnicodeLocation) + self.assertEqual(None, get_cached_content(self.unicodeLocation), + 'should not be stored in cache with unicodeLocation') + self.assertEqual(None, get_cached_content(self.nonUnicodeLocation), + 'should not be stored in cache with nonUnicodeLocation') + + + + diff --git a/common/djangoapps/cache_toolbox/core.py b/common/djangoapps/cache_toolbox/core.py index caba804750..3bd184bc2c 100644 --- a/common/djangoapps/cache_toolbox/core.py +++ b/common/djangoapps/cache_toolbox/core.py @@ -109,10 +109,10 @@ def instance_key(model, instance_or_pk): ) def set_cached_content(content): - cache.set(content.get_id(), content) + cache.set(str(content.location), content) def get_cached_content(location): - return cache.get(StaticContent.get_id_from_location(location)) + return cache.get(str(location)) def del_cached_content(location): - cache.delete(StaticContent.get_id_from_location(location)) + cache.delete(str(location)) diff --git a/rakefile b/rakefile index e984b7cc5b..e2441aec12 100644 --- a/rakefile +++ b/rakefile @@ -120,7 +120,7 @@ default_options = { } task :predjango do - sh("find . -type f -name *.pyc -delete") + sh("find . -type f -name '*.pyc' -delete") sh('pip install -q --upgrade --no-deps -r local-requirements.txt') end