# -*- 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[^.]+)' 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[^.]+)' 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()