def test_populate_redis_backend_with_size(self): TestModel.objects.all().delete() for i in range(1, 10): test_objc = TestModel.objects.create() with open('thumbnails/tests/tests.png', 'rb') as image_file: test_objc.avatar = File(image_file) test_objc.save() # create all thumbnails objects = TestModel.objects.all() images = [] for obj in objects: obj.avatar.thumbnails.metadata_backend = RedisBackend() for size in conf.SIZES: obj.avatar.thumbnails.get(size) images.append(obj.avatar) # reset _thumbnails for image in images: image.thumbnails._thumbnails = {} # Adding format image run correctly fetch_thumbnails(images, ['small', 'large', 'source_with_format']) for image in images: thumbnails = image.thumbnails sizes = [size for size in thumbnails._thumbnails.keys()] for size in sizes: # Make sure all thumbnail sizes have the right value self.assertEqual(thumbnails._thumbnails[size].name, thumbnails.get(size).name) self.assertEqual(set(sizes), set(['small', 'large', 'source_with_format']))
def test_fetch_redis_backend(self): TestModel.objects.all().delete() for i in range(1, 10): test_objc = TestModel.objects.create() with open('thumbnails/tests/tests.png', 'rb') as image_file: test_objc.avatar = File(image_file) test_objc.save() images = [] objects = TestModel.objects.all() # test pre-created thumbnails for obj in objects: obj.avatar.thumbnails.metadata_backend = RedisBackend() images.append(obj.avatar) # make sure cache is still empty, so it can be generated freshly fetch_thumbnails(images) for image in images: self.assertEqual(image.thumbnails._thumbnails, {}) # create all thumbnails for image in images: for size in conf.SIZES: image.thumbnails.get(size) # reset _thumbnails for image in images: image.thumbnails._thumbnails = {} fetch_thumbnails(images) for image in images: thumbnails = image.thumbnails sizes = [size for size in thumbnails._thumbnails.keys()] for size in sizes: # Make sure all thumbnail sizes have the right value self.assertEqual(thumbnails._thumbnails[size].name, thumbnails.get(size).name) self.assertEqual(set(sizes), set(conf.SIZES)) # Fetch for format image run correctly fetch_thumbnails(images, ['source_with_format']) for image in images: thumbnails = image.thumbnails sizes = [size for size in thumbnails._thumbnails.keys()] self.assertEqual(thumbnails._thumbnails['source_with_format'].name, thumbnails.get('source_with_format').name) self.assertEqual(sizes, ['source_with_format']) self.assertEqual( os.path.splitext( thumbnails._thumbnails['source_with_format'].name)[1], '.webp')
def setUp(self): self.source_name = "tests.png" self.size = "small" self.instance = TestModel.objects.create() with open('thumbnails/tests/tests.png', 'rb') as image_file: self.instance.avatar = File(image_file) self.instance.save() self.backend = RedisBackend() self.instance.avatar.thumbnails.metadata_backend = self.backend self.avatar_folder = \ os.path.join(self.instance.avatar.storage.temporary_location, conf.BASE_DIR, 'avatars') self.instance.avatar.thumbnails.small self.basename = os.path.basename(self.instance.avatar.path) self.filename, self.ext = os.path.splitext(self.basename)
def setUp(self): self.backend = RedisBackend() self.redis = StrictRedis()