diff --git a/templates/article.html b/templates/article.html index 80e6987..6236920 100644 --- a/templates/article.html +++ b/templates/article.html @@ -20,6 +20,8 @@ {% else %} {% set selected_cover = SITEURL+"/"+HEADER_COVER %} {% endif %} +{% elif article.color %} + {% set selected_color = article.color %} {% elif HEADER_COLOR %} {% set selected_color = HEADER_COLOR %} {% endif %} @@ -164,12 +166,19 @@ {% if AUTHORS_BIO[author.name.lower()].website %}
diff --git a/templates/author.html b/templates/author.html index 51a9415..f657821 100644 --- a/templates/author.html +++ b/templates/author.html @@ -92,11 +92,18 @@ {% if AUTHORS_BIO[author.name.lower()].website %} {% endif %} - {% if AUTHORS_BIO[author.name.lower()].twitter %} - - {% endif %} + {% if AUTHORS_BIO[author.name.lower()].facebook %} {% endif %} + {% if AUTHORS_BIO[author.name.lower()].github %} + + {% endif %} + {% if AUTHORS_BIO[author.name.lower()].linkedin %} + + {% endif %} + {% if AUTHORS_BIO[author.name.lower()].twitter %} + + {% endif %} {% endif %} - {% if AUTHORS_BIO[author.name.lower()].twitter %} - - {% endif %} + {% if AUTHORS_BIO[author.name.lower()].facebook %} + {% endif %} + {% if AUTHORS_BIO[author.name.lower()].github %} + + {% endif %} + {% if AUTHORS_BIO[author.name.lower()].linkedin %} + + {% endif %} + {% if AUTHORS_BIO[author.name.lower()].twitter %} + {% endif %} diff --git a/templates/page.html b/templates/page.html index 6ce882c..f19d61f 100644 --- a/templates/page.html +++ b/templates/page.html @@ -21,6 +21,8 @@ {% else %} {% set selected_cover = SITEURL+"/"+HEADER_COVER %} {% endif %} +{% elif article.color %} + {% set selected_color = article.color %} {% elif HEADER_COLOR %} {% set selected_color = HEADER_COLOR %} {% endif %} diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/support.py b/tests/support.py index 78593a6..db81e84 100644 --- a/tests/support.py +++ b/tests/support.py @@ -215,4 +215,95 @@ class LoggedTestCase(unittest.TestCase): self.assertEqual( actual, count, msg='expected {} occurrences of {!r}, but found {}'.format( - count, msg, actual)) \ No newline at end of file + count, msg, actual)) + +from bs4 import BeautifulSoup +from pelican.generators import (ArticlesGenerator, Generator, PagesGenerator, + PelicanTemplateNotFound, StaticGenerator, + TemplatePagesGenerator) +from pelican.readers import RstReader +from pelican.writers import Writer +from pelican.contents import (Article, Page) + +CUR_DIR = os.path.dirname(__file__) +CONTENT_DIR = os.path.join(CUR_DIR, 'content') +OUTPUT_DIR = os.path.join(CUR_DIR, 'output') + +class BaseTest(object): + + def __init__(self): + self.initSettings() + + def initSettings(self): + self.old_locale = locale.setlocale(locale.LC_ALL) + locale.setlocale(locale.LC_ALL, str('C')) + self.settings = get_my_settings() + self.settings['THEME'] = "../" + self.settings['filenames'] = {} + self.reader = RstReader(self.settings) + self.writer = Writer("output", self.settings) + + def gen_article_and_html_from_rst(self, rstPath): + content, metadata = self.reader.read(rstPath) + article = Article(content=content, metadata=metadata) + generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + generator.generate_context() + f = lambda a: True if (a.slug == article.slug) else False + result = filter(f, generator.context["articles"])[0] + self.writer.write_file( + result.save_as, generator.get_template('article'), + generator.context, article=result) + soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+result.save_as), "html.parser") + return (result, soup) + + def gen_page_and_html_from_rst(self, rstPath): + content, metadata = self.reader.read(rstPath) + page = Page(content=content, metadata=metadata) + generator = PagesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + generator.generate_context() + f = lambda a: True if (a.slug == page.slug) else False + result = filter(f, generator.context["pages"])[0] + self.writer.write_file( + result.save_as, generator.get_template('page'), + generator.context, page=result) + soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+result.save_as), "html.parser") + return (result, soup) + + def gen_tag_and_html_from_name(self, name): + generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + generator.generate_context() + generator.generate_tags(self.writer.write_file) + selectedTag = None + + for tag, articles in generator.tags.items(): + if tag.name == name: + selectedTag = tag + + soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedTag.save_as), "html.parser") + return (selectedTag, soup) + + def gen_category_and_html_from_name(self, name): + generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + generator.generate_context() + generator.generate_categories(self.writer.write_file) + selectedCategory = None + + for category, articles in generator.categories: + if category.name == name: + selectedCategory = category + + soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedCategory.save_as), "html.parser") + return (selectedCategory, soup) + + def gen_author_and_html_from_name(self, name): + generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) + generator.generate_context() + generator.generate_authors(self.writer.write_file) + selectedAuthor = None + + for author, articles in generator.authors: + if author.name == name: + selectedAuthor = author + + soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedAuthor.save_as), "html.parser") + return (selectedAuthor, soup) \ No newline at end of file diff --git a/tests/test_author_bio.py b/tests/test_author_bio.py new file mode 100644 index 0000000..82dbdf5 --- /dev/null +++ b/tests/test_author_bio.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import locale +from shutil import copy, rmtree + +from support import (get_my_settings, unittest, BaseTest, CUR_DIR, CONTENT_DIR, OUTPUT_DIR) + +def tearDownModule(): + print("teardown module") + try: + rmtree(OUTPUT_DIR) + except OSError, e: + print ("Error: %s - %s." % (e.filename,e.strerror)) + +class AuthorSocialLinksTest(unittest.TestCase, BaseTest): + + def setUp(self): + self.initSettings() + + def tearDown(self): + locale.setlocale(locale.LC_ALL, self.old_locale) + + def test_linkedin_link(self): + authorName = "raj" + self.settings['AUTHORS_BIO'] = { + authorName: { + 'cover': "http://examble.com/cover.jpg", + 'linkedin': "mylinkedinname" + } + } + rstPath="content/article_with_og_image.rst" + result, soup = self.gen_article_and_html_from_rst(rstPath) + selected = soup.find(name="span", attrs={"class": "post-author-linkedin"}) + # Assertion + self.assertTrue("https://www.linkedin.com/in/mylinkedinname" in str(selected)) + + result, soup = self.gen_author_and_html_from_name(authorName) + selected = soup.find(name="span", attrs={"class": "post-author-linkedin"}) + # Assertion + self.assertTrue("https://www.linkedin.com/in/mylinkedinname" in str(selected)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/test_coverimages.py b/tests/test_coverimages.py index 7891345..23af4ee 100644 --- a/tests/test_coverimages.py +++ b/tests/test_coverimages.py @@ -2,35 +2,21 @@ from __future__ import unicode_literals import locale -import os -from bs4 import BeautifulSoup -from codecs import open from shutil import copy, rmtree -from tempfile import mkdtemp -from pelican.generators import (ArticlesGenerator, Generator, PagesGenerator, - PelicanTemplateNotFound, StaticGenerator, - TemplatePagesGenerator) -from pelican.readers import RstReader -from pelican.writers import Writer -from pelican.contents import (Article, Page) -from support import (get_my_settings, unittest) - -CUR_DIR = os.path.dirname(__file__) -CONTENT_DIR = os.path.join(CUR_DIR, 'content') -OUTPUT_DIR = os.path.join(CUR_DIR, 'output') +from support import (get_my_settings, unittest, BaseTest, CUR_DIR, CONTENT_DIR, OUTPUT_DIR) def setUpModule(): print("setup module") def tearDownModule(): print("teardown module") - # try: - # rmtree(OUTPUT_DIR) - # except OSError, e: - # print ("Error: %s - %s." % (e.filename,e.strerror)) + try: + rmtree(OUTPUT_DIR) + except OSError, e: + print ("Error: %s - %s." % (e.filename,e.strerror)) -class ArticleCoverImageTest(unittest.TestCase): +class ArticleCoverImageTest(unittest.TestCase, BaseTest): @classmethod def setUpClass(cls): @@ -41,34 +27,15 @@ class ArticleCoverImageTest(unittest.TestCase): print("tearDownClass") def setUp(self): - self.old_locale = locale.setlocale(locale.LC_ALL) - locale.setlocale(locale.LC_ALL, str('C')) - self.settings = get_my_settings() - self.settings['THEME'] = "../" - self.settings['filenames'] = {} - self.reader = RstReader(self.settings) - self.writer = Writer("output", self.settings) + self.initSettings() def tearDown(self): locale.setlocale(locale.LC_ALL, self.old_locale) - def _gen_article_and_html_from_rst(self, rstPath): - content, metadata = self.reader.read(rstPath) - article = Article(content=content, metadata=metadata) - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) - generator.generate_context() - f = lambda a: True if (a.slug == article.slug) else False - result = filter(f, generator.context["articles"])[0] - self.writer.write_file( - result.save_as, generator.get_template('article'), - generator.context, article=result) - soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+result.save_as), "html.parser") - return (result, soup) - def test_article_cover(self): self.settings['SITEURL']="http://www.example.com" rstPath="content/article_with_cover_image.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"]) @@ -76,7 +43,7 @@ class ArticleCoverImageTest(unittest.TestCase): def test_article_header_cover(self): self.settings['HEADER_COVER']='/assets/images/header_cover.jpg' rstPath="content/article_without_cover.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVER'] in selected["style"]) @@ -84,14 +51,14 @@ class ArticleCoverImageTest(unittest.TestCase): def test_article_header_http_cover(self): self.settings['HEADER_COVER']='http://example.com/cover.jpg' rstPath="content/article_without_cover.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVER'] in selected["style"]) def test_article_theme_cover(self): rstPath="content/article_without_cover.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -99,56 +66,37 @@ class ArticleCoverImageTest(unittest.TestCase): def test_article_header_color(self): self.settings['HEADER_COLOR']='blue' rstPath="content/article_without_cover.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"]) def test_article_http_cover(self): rstPath="content/article_with_http_cover_image.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(result.cover in selected["style"]) def test_article_og_cover(self): rstPath="content/article_with_og_image.rst" - result, soup = self._gen_article_and_html_from_rst(rstPath) + result, soup = self.gen_article_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(result.og_image in selected["style"]) -class PageCoverImageTest(unittest.TestCase): +class PageCoverImageTest(unittest.TestCase, BaseTest): def setUp(self): - self.old_locale = locale.setlocale(locale.LC_ALL) - locale.setlocale(locale.LC_ALL, str('C')) - self.settings = get_my_settings() - self.settings['THEME'] = "../" - self.settings['filenames'] = {} - self.reader = RstReader(self.settings) - self.writer = Writer("output", self.settings) + self.initSettings() def tearDown(self): locale.setlocale(locale.LC_ALL, self.old_locale) - def _gen_page_and_html_from_rst(self, rstPath): - content, metadata = self.reader.read(rstPath) - page = Page(content=content, metadata=metadata) - generator = PagesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) - generator.generate_context() - f = lambda a: True if (a.slug == page.slug) else False - result = filter(f, generator.context["pages"])[0] - self.writer.write_file( - result.save_as, generator.get_template('page'), - generator.context, page=result) - soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+result.save_as), "html.parser") - return (result, soup) - def test_page_cover(self): self.settings['SITEURL']="http://www.example.com" rstPath="content/pages/page_with_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"]) @@ -156,7 +104,7 @@ class PageCoverImageTest(unittest.TestCase): def test_page_header_cover(self): self.settings['HEADER_COVER']='/assets/images/header_cover.jpg' rstPath="content/pages/page_without_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVER'] in selected["style"]) @@ -164,14 +112,14 @@ class PageCoverImageTest(unittest.TestCase): def test_page_header_http_cover(self): self.settings['HEADER_COVER']='http://example.com/cover.jpg' rstPath="content/pages/page_without_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVER'] in selected["style"]) def test_page_theme_cover(self): rstPath="content/pages/page_without_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -179,54 +127,35 @@ class PageCoverImageTest(unittest.TestCase): def test_page_header_color(self): self.settings['HEADER_COLOR']='blue' rstPath="content/pages/page_without_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"]) def test_page_http_cover(self): rstPath="content/pages/page_with_http_cover_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(result.cover in selected["style"]) def test_page_og_cover(self): rstPath="content/pages/page_with_og_image.rst" - result, soup = self._gen_page_and_html_from_rst(rstPath) + result, soup = self.gen_page_and_html_from_rst(rstPath) selected = soup.find(name="div", attrs={"class": "post-cover cover"}) # Assertion self.assertTrue(result.og_image in selected["style"]) -class TagCoverImageTest(unittest.TestCase): +class TagCoverImageTest(unittest.TestCase, BaseTest): def setUp(self): - self.old_locale = locale.setlocale(locale.LC_ALL) - locale.setlocale(locale.LC_ALL, str('C')) - self.settings = get_my_settings() - self.settings['THEME'] = "../" - self.settings['filenames'] = {} - self.reader = RstReader(self.settings) - self.writer = Writer("output", self.settings) - - def _gen_tag_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) - generator.generate_context() - generator.generate_tags(self.writer.write_file) - selectedTag = None - - for tag, articles in generator.tags.items(): - if tag.name == name: - selectedTag = tag - - soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedTag.save_as), "html.parser") - return (selectedTag, soup) + self.initSettings() def tearDown(self): locale.setlocale(locale.LC_ALL, self.old_locale) def test_footag_theme_cover(self): - result, soup = self._gen_tag_and_html_from_name("footag") + result, soup = self.gen_tag_and_html_from_name("footag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -236,7 +165,7 @@ class TagCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_TAG'] = { tagName: "/assets/images/foo_tag_cover.jpg" } - result, soup = self._gen_tag_and_html_from_name(tagName) + result, soup = self.gen_tag_and_html_from_name(tagName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"]) @@ -246,7 +175,7 @@ class TagCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_TAG'] = { tagName: "http://examble.com/cover.jpg" } - result, soup = self._gen_tag_and_html_from_name(tagName) + result, soup = self.gen_tag_and_html_from_name(tagName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"]) @@ -254,27 +183,27 @@ class TagCoverImageTest(unittest.TestCase): def test_footag_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_tag_and_html_from_name("footag") + result, soup = self.gen_tag_and_html_from_name("footag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_footag_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_tag_and_html_from_name("footag") + result, soup = self.gen_tag_and_html_from_name("footag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_footag_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_tag_and_html_from_name("footag") + result, soup = self.gen_tag_and_html_from_name("footag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"]) def test_bartag_theme_cover(self): - result, soup = self._gen_tag_and_html_from_name("bartag") + result, soup = self.gen_tag_and_html_from_name("bartag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -284,7 +213,7 @@ class TagCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_TAG'] = { tagName: "/assets/images/bar_tag_cover.jpg" } - result, soup = self._gen_tag_and_html_from_name(tagName) + result, soup = self.gen_tag_and_html_from_name(tagName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"]) @@ -294,7 +223,7 @@ class TagCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_TAG'] = { tagName: "http://examble.com/cover.jpg" } - result, soup = self._gen_tag_and_html_from_name(tagName) + result, soup = self.gen_tag_and_html_from_name(tagName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"]) @@ -302,55 +231,36 @@ class TagCoverImageTest(unittest.TestCase): def test_bartag_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_tag_and_html_from_name("bartag") + result, soup = self.gen_tag_and_html_from_name("bartag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_bartag_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_tag_and_html_from_name("bartag") + result, soup = self.gen_tag_and_html_from_name("bartag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_bartag_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_tag_and_html_from_name("bartag") + result, soup = self.gen_tag_and_html_from_name("bartag") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"]) -class CategoryCoverImageTest(unittest.TestCase): +class CategoryCoverImageTest(unittest.TestCase, BaseTest): def setUp(self): - self.old_locale = locale.setlocale(locale.LC_ALL) - locale.setlocale(locale.LC_ALL, str('C')) - self.settings = get_my_settings() - self.settings['THEME'] = "../" - self.settings['filenames'] = {} - self.reader = RstReader(self.settings) - self.writer = Writer("output", self.settings) + self.initSettings() def tearDown(self): locale.setlocale(locale.LC_ALL, self.old_locale) - def _gen_category_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) - generator.generate_context() - generator.generate_categories(self.writer.write_file) - selectedCategory = None - - for category, articles in generator.categories: - if category.name == name: - selectedCategory = category - - soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedCategory.save_as), "html.parser") - return (selectedCategory, soup) - def test_foo_theme_cover(self): - result, soup = self._gen_category_and_html_from_name("foo") + result, soup = self.gen_category_and_html_from_name("foo") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -360,7 +270,7 @@ class CategoryCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_CATEGORY'] = { categoryName: "/assets/images/foo_category_cover.jpg" } - result, soup = self._gen_category_and_html_from_name(categoryName) + result, soup = self.gen_category_and_html_from_name(categoryName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"]) @@ -370,7 +280,7 @@ class CategoryCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_CATEGORY'] = { categoryName: "http://examble.com/cover.jpg" } - result, soup = self._gen_category_and_html_from_name(categoryName) + result, soup = self.gen_category_and_html_from_name(categoryName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"]) @@ -378,27 +288,27 @@ class CategoryCoverImageTest(unittest.TestCase): def test_foo_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_category_and_html_from_name("foo") + result, soup = self.gen_category_and_html_from_name("foo") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_foo_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_category_and_html_from_name("foo") + result, soup = self.gen_category_and_html_from_name("foo") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_foo_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_category_and_html_from_name("foo") + result, soup = self.gen_category_and_html_from_name("foo") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"]) def test_bar_theme_cover(self): - result, soup = self._gen_category_and_html_from_name("bar") + result, soup = self.gen_category_and_html_from_name("bar") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -408,7 +318,7 @@ class CategoryCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_CATEGORY'] = { categoryName: "/assets/images/bar_category_cover.jpg" } - result, soup = self._gen_category_and_html_from_name(categoryName) + result, soup = self.gen_category_and_html_from_name(categoryName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"]) @@ -418,7 +328,7 @@ class CategoryCoverImageTest(unittest.TestCase): self.settings['HEADER_COVERS_BY_CATEGORY'] = { categoryName: "http://examble.com/cover.jpg" } - result, soup = self._gen_category_and_html_from_name(categoryName) + result, soup = self.gen_category_and_html_from_name(categoryName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"]) @@ -426,54 +336,35 @@ class CategoryCoverImageTest(unittest.TestCase): def test_bar_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_category_and_html_from_name("bar") + result, soup = self.gen_category_and_html_from_name("bar") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_bar_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_category_and_html_from_name("bar") + result, soup = self.gen_category_and_html_from_name("bar") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_bar_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_category_and_html_from_name("bar") + result, soup = self.gen_category_and_html_from_name("bar") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"]) -class AuthorCoverImageTest(unittest.TestCase): +class AuthorCoverImageTest(unittest.TestCase, BaseTest): def setUp(self): - self.old_locale = locale.setlocale(locale.LC_ALL) - locale.setlocale(locale.LC_ALL, str('C')) - self.settings = get_my_settings() - self.settings['THEME'] = "../" - self.settings['filenames'] = {} - self.reader = RstReader(self.settings) - self.writer = Writer("output", self.settings) + self.initSettings() def tearDown(self): locale.setlocale(locale.LC_ALL, self.old_locale) - def _gen_author_and_html_from_name(self, name): - generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR) - generator.generate_context() - generator.generate_authors(self.writer.write_file) - selectedAuthor = None - - for author, articles in generator.authors: - if author.name == name: - selectedAuthor = author - - soup = BeautifulSoup(open("./"+self.writer.output_path+'/'+selectedAuthor.save_as), "html.parser") - return (selectedAuthor, soup) - def test_arul_theme_cover(self): - result, soup = self._gen_author_and_html_from_name("arul") + result, soup = self.gen_author_and_html_from_name("arul") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -485,7 +376,7 @@ class AuthorCoverImageTest(unittest.TestCase): 'cover': "/assets/images/arul_author_cover.jpg" } } - result, soup = self._gen_author_and_html_from_name(authorName) + result, soup = self.gen_author_and_html_from_name(authorName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"]) @@ -497,7 +388,7 @@ class AuthorCoverImageTest(unittest.TestCase): 'cover': "http://examble.com/cover.jpg" } } - result, soup = self._gen_author_and_html_from_name(authorName) + result, soup = self.gen_author_and_html_from_name(authorName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"]) @@ -505,27 +396,27 @@ class AuthorCoverImageTest(unittest.TestCase): def test_arul_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_author_and_html_from_name("arul") + result, soup = self.gen_author_and_html_from_name("arul") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_arul_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_author_and_html_from_name("arul") + result, soup = self.gen_author_and_html_from_name("arul") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_arul_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_author_and_html_from_name("arul") + result, soup = self.gen_author_and_html_from_name("arul") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"]) def test_raj_theme_cover(self): - result, soup = self._gen_author_and_html_from_name("raj") + result, soup = self.gen_author_and_html_from_name("raj") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue("/theme/images/post-bg.jpg" in selected["style"]) @@ -537,7 +428,7 @@ class AuthorCoverImageTest(unittest.TestCase): 'cover': "/assets/images/raj_author_cover.jpg" } } - result, soup = self._gen_author_and_html_from_name(authorName) + result, soup = self.gen_author_and_html_from_name(authorName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"]) @@ -549,7 +440,7 @@ class AuthorCoverImageTest(unittest.TestCase): 'cover': "http://examble.com/cover.jpg" } } - result, soup = self._gen_author_and_html_from_name(authorName) + result, soup = self.gen_author_and_html_from_name(authorName) selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"]) @@ -557,21 +448,21 @@ class AuthorCoverImageTest(unittest.TestCase): def test_raj_header_cover(self): self.settings['SITEURL'] = "http://example.com" self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg" - result, soup = self._gen_author_and_html_from_name("raj") + result, soup = self.gen_author_and_html_from_name("raj") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"]) def test_raj_header_http_cover(self): self.settings["HEADER_COVER"] = "http://example.com/cover.jpg" - result, soup = self._gen_author_and_html_from_name("raj") + result, soup = self.gen_author_and_html_from_name("raj") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COVER"] in selected["style"]) def test_raj_header_color(self): self.settings["HEADER_COLOR"] = "red" - result, soup = self._gen_author_and_html_from_name("raj") + result, soup = self.gen_author_and_html_from_name("raj") selected = soup.find(name="div", attrs={"class": "blog-cover cover"}) # Assertion self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])