varia.website/plugins/sub_parts/test_sub_parts.py

121 lines
4.2 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
from pelican.generators import ArticlesGenerator
from pelican.tests.support import unittest, get_settings
import sub_parts
CUR_DIR = os.path.dirname(__file__)
class TestSubParts(unittest.TestCase):
@classmethod
def setUpClass(cls):
settings = get_settings(filenames={})
settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
settings['AUTHOR'] = 'Me'
settings['DEFAULT_DATE'] = (1970, 1, 1)
settings['DEFAULT_CATEGORY'] = 'Default'
settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
settings['PLUGINS'] = [sub_parts]
settings['CACHE_CONTENT'] = False
cls.generator = ArticlesGenerator(
context=settings.copy(), settings=settings,
path=settings['PATH'], theme=settings['THEME'], output_path=None)
cls.generator.generate_context()
cls.all_articles = list(cls.generator.articles)
sub_parts.patch_subparts(cls.generator)
def test_all_articles(self):
self.assertEqual(
sorted(['noparent', 'parent',
'parent--explicit', 'parent--implicit']),
sorted([a.slug for a in self.all_articles]))
def test_articles(self):
self.assertEqual(
sorted(['noparent', 'parent']),
sorted([a.slug for a in self.generator.articles]))
def test_dates(self):
self.assertEqual(
sorted(['noparent', 'parent']),
sorted([a.slug for a in self.generator.dates]))
def test_categories(self):
self.assertEqual(
sorted(['noparent', 'parent']),
sorted([a.slug for a in self.generator.categories[0][1]]))
def test_tags(self):
self.assertEqual(
sorted([a.slug for a in self.all_articles]),
sorted([a.slug for a in self.generator.tags['atag']]))
def test_authors(self):
self.assertEqual(
sorted([a.slug for a in self.all_articles]),
sorted([a.slug for a in self.generator.authors[0][1]]))
def test_subparts(self):
for a in self.all_articles:
if a.slug == 'parent':
self.assertTrue(hasattr(a, 'subparts'))
self.assertEqual(
sorted(['parent--explicit', 'parent--implicit']),
sorted([a.slug for a in a.subparts]))
else:
self.assertFalse(hasattr(a, 'subparts'))
def test_subpart_of(self):
for a in self.all_articles:
if '--' in a.slug:
self.assertTrue(hasattr(a, 'subpart_of'))
self.assertEqual('parent', a.subpart_of.slug)
else:
self.assertFalse(hasattr(a, 'subpart_of'))
def test_subtitle(self):
for a in self.all_articles:
if '--' in a.slug:
self.assertTrue(hasattr(a, 'subtitle'))
self.assertEqual(a.title,
a.subtitle + ', ' + a.subpart_of.title)
class TestSubPartsPhotos(unittest.TestCase):
@classmethod
def setUpClass(cls):
settings = get_settings(filenames={})
settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
settings['AUTHOR'] = 'Me'
settings['DEFAULT_DATE'] = (1970, 1, 1)
settings['DEFAULT_CATEGORY'] = 'Default'
settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
settings['PLUGINS'] = [sub_parts]
settings['CACHE_CONTENT'] = False
cls.generator = ArticlesGenerator(
context=settings.copy(), settings=settings,
path=settings['PATH'], theme=settings['THEME'], output_path=None)
cls.generator.generate_context()
cls.all_articles = list(cls.generator.articles)
for a in cls.all_articles:
a.photo_gallery = [('i.jpg', 'i.jpg', 'it.jpg', '', '')]
sub_parts.patch_subparts(cls.generator)
def test_subphotos(self):
for a in self.all_articles:
if a.slug == 'parent':
self.assertTrue(hasattr(a, 'subphotos'))
self.assertEqual(3, a.subphotos)
else:
self.assertFalse(hasattr(a, 'subphotos'))
if __name__ == '__main__':
unittest.main()