linkedin and github link (#27)

* Ref #24 linkedin and github social link in author page and article page

-test case for that

- BaseTest added

* Ref #24 icon to link since linkedin and github is not present

* article color fix
This commit is contained in:
Arul 2018-05-18 17:26:41 +05:30 committed by GitHub
parent 7b26ad1013
commit 1e0a56e0d8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 225 additions and 181 deletions

View file

@ -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 %}
<span class="post-author-website"><a href="{{AUTHORS_BIO[author.name.lower()].website}}"><i class="ic ic-link"></i> Website</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].twitter %}
<span class="post-author-twitter"><a target="_blank" href="https://twitter.com/{{AUTHORS_BIO[author.name.lower()].twitter}}"><i class="ic ic-twitter"></i> Twitter</a></span>
{% endif %}
<!-- Social linkes in alphabet order. -->
{% if AUTHORS_BIO[author.name.lower()].facebook %}
<span class="post-author-facebook"><a target="_blank" href="https://facebook.com/{{AUTHORS_BIO[author.name.lower()].facebook}}"><i class="ic ic-facebook"></i> Facebook</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].github %}
<span class="post-author-github"><a target="_blank" href="https://github.com/{{AUTHORS_BIO[author.name.lower()].github}}"><i class="ic ic-link"></i> GitHub</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].linkedin %}
<span class="post-author-linkedin"><a target="_blank" href="https://www.linkedin.com/in/{{AUTHORS_BIO[author.name.lower()].linkedin}}"><i class="ic ic-link"></i> LinkedIn</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].twitter %}
<span class="post-author-twitter"><a target="_blank" href="https://twitter.com/{{AUTHORS_BIO[author.name.lower()].twitter}}"><i class="ic ic-twitter"></i> Twitter</a></span>
{% endif %}
</div>
<div class="clear"></div>
</aside>

View file

@ -92,11 +92,18 @@
{% if AUTHORS_BIO[author.name.lower()].website %}
<span class="post-author-website"><a href="{{AUTHORS_BIO[author.name.lower()].website}}"><i class="ic ic-link"></i> Website</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].twitter %}
<span class="post-author-twitter"><a target="_blank" href="https://twitter.com/{{AUTHORS_BIO[author.name.lower()].twitter}}"><i class="ic ic-twitter"></i> Twitter</a></span>
{% endif %}
<!-- Social linkes in alphabet order. -->
{% if AUTHORS_BIO[author.name.lower()].facebook %}
<span class="post-author-facebook"><a target="_blank" href="https://facebook.com/{{AUTHORS_BIO[author.name.lower()].facebook}}"><i class="ic ic-facebook"></i> Facebook</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].github %}
<span class="post-author-github"><a target="_blank" href="https://github.com/{{AUTHORS_BIO[author.name.lower()].github}}"><i class="ic ic-link"></i> GitHub</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].linkedin %}
<span class="post-author-linkedin"><a target="_blank" href="https://www.linkedin.com/in/{{AUTHORS_BIO[author.name.lower()].linkedin}}"><i class="ic ic-link"></i> LinkedIn</a></span>
{% endif %}
{% if AUTHORS_BIO[author.name.lower()].twitter %}
<span class="post-author-twitter"><a target="_blank" href="https://twitter.com/{{AUTHORS_BIO[author.name.lower()].twitter}}"><i class="ic ic-twitter"></i> Twitter</a></span>
{% endif %}
<span class="post-author-stats"><i class="ic ic-posts"></i> {{ articles|count }} {% if articles|count > 1 %} posts {% else %} post {% endif %}</span>
</div>

View file

@ -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 %}

View file

View file

@ -216,3 +216,94 @@ class LoggedTestCase(unittest.TestCase):
actual, count,
msg='expected {} occurrences of {!r}, but found {}'.format(
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)

44
tests/test_author_bio.py Normal file
View file

@ -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()

View file

@ -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"])