Skip to content

Commit

Permalink
More test
Browse files Browse the repository at this point in the history
  • Loading branch information
silentsokolov committed May 19, 2017
1 parent 907ce3c commit ac548d7
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 9 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ install:
- pip install $FLASK
- pip install pillow
- pip install codecov
- pip install mock

branches:
only:
Expand Down
2 changes: 1 addition & 1 deletion flask_thumbnails/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ def _get_format(self, image, **options):

return self.app.config['THUMBNAIL_DEFAUL_FORMAT']

def _create_thumbnail(self, image, size, crop, background=None):
def _create_thumbnail(self, image, size, crop='fit', background=None):
if crop == 'fit':
image = ImageOps.fit(image, size, Image.ANTIALIAS)
else:
Expand Down
132 changes: 132 additions & 0 deletions tests/core_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import os
import unittest
import tempfile
import mock
from io import BytesIO

from PIL import Image

from flask_thumbnails import Thumbnail
from flask import Flask

from flask_thumbnails.storage_backends import FilesystemStorageBackend


class CoreTestCase(unittest.TestCase):
def setUp(self):
self.app = Flask(__name__)
self.thumbnail = Thumbnail(app=self.app)
self.client = self.app.test_client()

self.image = Image.new('RGB', (100, 100), 'black')

def test_root_directory(self):
self.app.config['THUMBNAIL_MEDIA_ROOT'] = 'media'
self.assertEqual(
self.thumbnail.root_directory,
os.path.join(self.app.root_path, self.app.config['THUMBNAIL_MEDIA_ROOT'])
)

self.app.config['THUMBNAIL_MEDIA_ROOT'] = '/tmp/media'
self.assertEqual(self.thumbnail.root_directory, self.app.config['THUMBNAIL_MEDIA_ROOT'])

def test_thumbnail_directory(self):
self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_ROOT'] = 'media'
self.assertEqual(
self.thumbnail.thumbnail_directory,
os.path.join(self.app.root_path, self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_ROOT'])
)

self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_ROOT'] = '/tmp/media'
self.assertEqual(
self.thumbnail.thumbnail_directory,
self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_ROOT']
)

def test_root_url(self):
self.app.config['THUMBNAIL_MEDIA_URL'] = '/media'
self.assertEqual(self.thumbnail.root_url, self.app.config['THUMBNAIL_MEDIA_URL'])

def test_thumbnail_url(self):
self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_URL'] = '/media'
self.assertEqual(self.thumbnail.thumbnail_url, self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_URL'])

def test_storage_backend(self):
self.assertEqual(self.thumbnail.storage_backend, self.app.config['THUMBNAIL_STORAGE_BACKEND'])

def test_get_storage_backend(self):
self.assertIsInstance(self.thumbnail.get_storage_backend(), FilesystemStorageBackend)

def test_colormode(self):
image = Image.new('L', (10, 10))
new_image = self.thumbnail.colormode(image)

self.assertEqual(new_image.mode, 'RGB')

image = Image.new('LA', (10, 10))
new_image = self.thumbnail.colormode(image)

self.assertEqual(new_image.mode, 'RGBA')

image = Image.new('RGBA', (10, 10))
new_image = self.thumbnail.colormode(image)

self.assertEqual(new_image.mode, 'RGBA')

image = Image.new('RGB', (10, 10))
new_image = self.thumbnail.colormode(image)

self.assertEqual(new_image.mode, 'RGB')

def test_get_format(self):
image = Image.new('RGB', (10, 10))
new_image = self.thumbnail.colormode(image)

self.assertEqual(new_image.mode, 'RGB')

options = {'format': 'PNG'}
self.assertEqual(self.thumbnail._get_format(image, **options), 'PNG')

options = {}
self.assertEqual(self.thumbnail._get_format(image, **options), self.app.config['THUMBNAIL_DEFAUL_FORMAT'])

def test_get_raw_data(self):
image = Image.new('L', (10, 10))

options = {'format': 'JPEG'}
data = self.thumbnail.get_raw_data(image, **options)

new_image = Image.open(BytesIO(data))
self.assertEqual(image.mode, new_image.mode)
self.assertEqual(image.size, new_image.size)
self.assertEqual(new_image.format, 'JPEG')

def test_create_thumbnail(self):
image = Image.new('L', (100, 100))

new_image = self.thumbnail._create_thumbnail(image, size=(50, 50))

self.assertEqual(new_image.size, (50, 50))

new_image = self.thumbnail._create_thumbnail(image, size=(50, 50), crop=None)

self.assertEqual(new_image.size, (50, 50))

@mock.patch('flask_thumbnails.utils.generate_filename')
def test_get_thumbnail(self, mock_thumb_name):
with tempfile.NamedTemporaryFile(suffix='.jpg') as original:
with tempfile.NamedTemporaryFile(suffix='.jpg') as thumb:
mock_thumb_name.return_value = os.path.basename(thumb.name)
self.app.config['THUMBNAIL_MEDIA_ROOT'] = os.path.dirname(original.name)
self.app.config['THUMBNAIL_MEDIA_THUMBNAIL_ROOT'] = os.path.dirname(thumb.name)

image = Image.new('RGB', (100, 100), 'black')
image.save(original.name)

thumb_url = self.thumbnail.get_thumbnail(os.path.basename(original.name), '50x50')

self.assertTrue(thumb_url)
4 changes: 0 additions & 4 deletions tests/storage_backends_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,3 @@ def test_save(self):

def tearDown(self):
self.tmp_file.close()


if __name__ == '__main__':
unittest.main()
4 changes: 0 additions & 4 deletions tests/utils_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,3 @@ def test_import_from_string_none(self):
def test_generate_filename(self):
name = generate_filename('test.jpg', '200x200', 'fit', '100')
self.assertEqual(name, 'test_200x200_fit_100.jpg')


if __name__ == '__main__':
unittest.main()

0 comments on commit ac548d7

Please sign in to comment.