123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- import os
- from pelican.generators import ArticlesGenerator
- from pelican.tests.support import unittest, get_settings
- from tempfile import mkdtemp
- from shutil import rmtree
- import photos
- CUR_DIR = os.path.dirname(__file__)
- class TestPhotos(unittest.TestCase):
- @classmethod
- def setUpClass(cls):
- cls.temp_path = mkdtemp(prefix='pelicantests.')
- cls.settings = get_settings(filenames={})
- cls.settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
- cls.settings['PHOTO_LIBRARY'] = os.path.join(CUR_DIR, 'test_data')
- cls.settings['DEFAULT_DATE'] = (1970, 1, 1)
- cls.settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
- cls.settings['PLUGINS'] = [photos]
- cls.settings['CACHE_CONTENT'] = False
- cls.settings['OUTPUT_PATH'] = cls.temp_path
- cls.settings['SITEURL'] = 'http://getpelican.com/sub'
- photos.initialized(cls)
- cls.generator = ArticlesGenerator(
- context=cls.settings.copy(), settings=cls.settings,
- path=cls.settings['PATH'], theme=cls.settings['THEME'],
- output_path=cls.settings['OUTPUT_PATH'])
- photos.register()
- cls.generator.generate_context()
- photos.detect_gallery(cls.generator)
- photos.detect_image(cls.generator)
- @classmethod
- def tearDownClass(cls):
- rmtree(cls.temp_path)
- def test_image(self):
- for a in self.generator.articles:
- if 'image' in a.metadata:
- self.assertTrue(
- hasattr(a, 'photo_image'),
- msg="{} not recognized.".format(a.metadata['image']))
- def test_gallery(self):
- for a in self.generator.articles:
- if 'gallety' in a.metadata:
- self.assertTrue(
- hasattr(a, 'photo_gallery'),
- msg="{} not recognized.".format(a.metadata['gallery']))
- def get_article(self, slug):
- for a in self.generator.articles:
- if slug == a.slug:
- return a
- return None
- def test_photo_article_image(self):
- self.assertEqual(self.get_article('photo').photo_image,
- ('best.jpg',
- 'photos/agallery/besta.jpg',
- 'photos/agallery/bestt.jpg'))
- def test_photo_article_gallery(self):
- self.assertEqual(self.get_article('photo').photo_gallery[0],
- ('best.jpg',
- 'photos/agallery/best.jpg',
- 'photos/agallery/bestt.jpg',
- 'EXIF-best', 'Caption-best'))
- self.assertEqual(self.get_article('photo').photo_gallery[1],
- ('night.png',
- 'photos/agallery/night.jpg',
- 'photos/agallery/nightt.jpg',
- 'EXIF-night', ''))
- def test_photo_article_body(self):
- expected = ('<p>Here is my best photo, again.</p>\n'
- '<p><img alt="" src="http://getpelican.com/sub/photos/agallery/besta.jpg" />.</p>')
- self.assertEqual(expected, self.get_article('photo').content)
- def test_filename_article_image(self):
- self.assertEqual(
- ('best.jpg', 'agallery/best.jpg', 'photos/agallery/bestt.jpg'),
- self.get_article('filename').photo_image)
- def test_filename_article_gallery(self):
- self.assertEqual(self.get_article('filename').photo_gallery[0],
- ('best.jpg',
- 'agallery/best.jpg',
- 'photos/agallery/bestt.jpg',
- 'EXIF-best', 'Caption-best'))
- self.assertEqual(self.get_article('filename').photo_gallery[1],
- ('night.png',
- 'agallery/night.png',
- 'photos/agallery/nightt.jpg',
- 'EXIF-night', ''))
- def test_filename_article_body(self):
- expected = ('<p>Here is my best photo, again.</p>\n'
- '<p><img alt="" src="{filename}agallery/best.jpg" />.</p>')
- self.assertEqual(expected, self.get_article('filename').content)
- def test_queue_resize(self):
- expected = [
- ('photos/agallery/best.jpg',
- ('./test_data/agallery/best.jpg', (1024, 768, 80))),
- ('photos/agallery/besta.jpg',
- ('./test_data/agallery/best.jpg', (760, 506, 80))),
- ('photos/agallery/bestt.jpg',
- ('./test_data/agallery/best.jpg', (192, 144, 60))),
- ('photos/agallery/night.jpg',
- ('./test_data/agallery/night.png', (1024, 768, 80))),
- ('photos/agallery/nightt.jpg',
- ('./test_data/agallery/night.png', (192, 144, 60)))]
- self.assertEqual(sorted(expected), sorted(photos.queue_resize.items()))
- if __name__ == '__main__':
- unittest.main()
|