Skip to content

Commit

Permalink
Test that Optimistic strategy doesn't cause reads
Browse files Browse the repository at this point in the history
Using the Optimistic strategy should prevent IO ops when you cast the
file as a boolean.
  • Loading branch information
matthewwithanm committed Sep 23, 2014
1 parent 9f4192a commit c92f53c
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions setup.py
Expand Up @@ -48,6 +48,7 @@ def exec_file(filepath, globalz=None, localz=None):
'nose-progressive==1.5',
'django-nose==1.2',
'Pillow<3.0',
'mock==1.0.1',
],
test_suite='testrunner.run_tests',
install_requires=[
Expand Down
37 changes: 37 additions & 0 deletions tests/test_optimistic_strategy.py
@@ -0,0 +1,37 @@
from nose.tools import assert_true, assert_false
from imagekit.cachefiles import ImageCacheFile
from mock import Mock
from .utils import create_image
from django.core.files.storage import FileSystemStorage
from imagekit.cachefiles.backends import Simple as SimpleCFBackend
from imagekit.cachefiles.strategies import Optimistic as OptimisticStrategy


class ImageGenerator(object):
def generate(self):
return create_image()

def get_hash(self):
return 'abc123'


def get_image_cache_file():
storage = Mock(FileSystemStorage)
backend = SimpleCFBackend()
strategy = OptimisticStrategy()
generator = ImageGenerator()
return ImageCacheFile(generator, storage=storage,
cachefile_backend=backend,
cachefile_strategy=strategy)


def test_no_io_on_bool():
"""
When checking the truthiness of an ImageCacheFile, the storage shouldn't
peform IO operations.
"""
file = get_image_cache_file()
bool(file)
assert_false(file.storage.exists.called)
assert_false(file.storage.open.called)

0 comments on commit c92f53c

Please sign in to comment.