forked from varia/varia.website
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.2 KiB
121 lines
4.2 KiB
7 years ago
|
# -*- 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()
|