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:
parent
7b26ad1013
commit
1e0a56e0d8
7 changed files with 225 additions and 181 deletions
|
@ -20,6 +20,8 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif article.color %}
|
||||||
|
{% set selected_color = article.color %}
|
||||||
{% elif HEADER_COLOR %}
|
{% elif HEADER_COLOR %}
|
||||||
{% set selected_color = HEADER_COLOR %}
|
{% set selected_color = HEADER_COLOR %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -164,12 +166,19 @@
|
||||||
{% if AUTHORS_BIO[author.name.lower()].website %}
|
{% 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>
|
<span class="post-author-website"><a href="{{AUTHORS_BIO[author.name.lower()].website}}"><i class="ic ic-link"></i> Website</a></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if AUTHORS_BIO[author.name.lower()].twitter %}
|
<!-- Social linkes in alphabet order. -->
|
||||||
<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 %}
|
|
||||||
{% if AUTHORS_BIO[author.name.lower()].facebook %}
|
{% 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>
|
<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 %}
|
{% 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>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
|
@ -92,11 +92,18 @@
|
||||||
{% if AUTHORS_BIO[author.name.lower()].website %}
|
{% 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>
|
<span class="post-author-website"><a href="{{AUTHORS_BIO[author.name.lower()].website}}"><i class="ic ic-link"></i> Website</a></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if AUTHORS_BIO[author.name.lower()].twitter %}
|
<!-- Social linkes in alphabet order. -->
|
||||||
<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 %}
|
|
||||||
{% if AUTHORS_BIO[author.name.lower()].facebook %}
|
{% 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>
|
<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 %}
|
{% endif %}
|
||||||
<span class="post-author-stats"><i class="ic ic-posts"></i> {{ articles|count }} {% if articles|count > 1 %} posts {% else %} post {% endif %}</span>
|
<span class="post-author-stats"><i class="ic ic-posts"></i> {{ articles|count }} {% if articles|count > 1 %} posts {% else %} post {% endif %}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif article.color %}
|
||||||
|
{% set selected_color = article.color %}
|
||||||
{% elif HEADER_COLOR %}
|
{% elif HEADER_COLOR %}
|
||||||
{% set selected_color = HEADER_COLOR %}
|
{% set selected_color = HEADER_COLOR %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -215,4 +215,95 @@ class LoggedTestCase(unittest.TestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
actual, count,
|
actual, count,
|
||||||
msg='expected {} occurrences of {!r}, but found {}'.format(
|
msg='expected {} occurrences of {!r}, but found {}'.format(
|
||||||
count, msg, actual))
|
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
44
tests/test_author_bio.py
Normal 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()
|
|
@ -2,35 +2,21 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import locale
|
import locale
|
||||||
import os
|
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
from codecs import open
|
|
||||||
from shutil import copy, rmtree
|
from shutil import copy, rmtree
|
||||||
from tempfile import mkdtemp
|
|
||||||
|
|
||||||
from pelican.generators import (ArticlesGenerator, Generator, PagesGenerator,
|
from support import (get_my_settings, unittest, BaseTest, CUR_DIR, CONTENT_DIR, OUTPUT_DIR)
|
||||||
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')
|
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
print("setup module")
|
print("setup module")
|
||||||
|
|
||||||
def tearDownModule():
|
def tearDownModule():
|
||||||
print("teardown module")
|
print("teardown module")
|
||||||
# try:
|
try:
|
||||||
# rmtree(OUTPUT_DIR)
|
rmtree(OUTPUT_DIR)
|
||||||
# except OSError, e:
|
except OSError, e:
|
||||||
# print ("Error: %s - %s." % (e.filename,e.strerror))
|
print ("Error: %s - %s." % (e.filename,e.strerror))
|
||||||
|
|
||||||
class ArticleCoverImageTest(unittest.TestCase):
|
class ArticleCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
|
@ -41,34 +27,15 @@ class ArticleCoverImageTest(unittest.TestCase):
|
||||||
print("tearDownClass")
|
print("tearDownClass")
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
self.initSettings()
|
||||||
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 tearDown(self):
|
def tearDown(self):
|
||||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
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):
|
def test_article_cover(self):
|
||||||
self.settings['SITEURL']="http://www.example.com"
|
self.settings['SITEURL']="http://www.example.com"
|
||||||
rstPath="content/article_with_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"])
|
||||||
|
@ -76,7 +43,7 @@ class ArticleCoverImageTest(unittest.TestCase):
|
||||||
def test_article_header_cover(self):
|
def test_article_header_cover(self):
|
||||||
self.settings['HEADER_COVER']='/assets/images/header_cover.jpg'
|
self.settings['HEADER_COVER']='/assets/images/header_cover.jpg'
|
||||||
rstPath="content/article_without_cover.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVER'] in selected["style"])
|
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):
|
def test_article_header_http_cover(self):
|
||||||
self.settings['HEADER_COVER']='http://example.com/cover.jpg'
|
self.settings['HEADER_COVER']='http://example.com/cover.jpg'
|
||||||
rstPath="content/article_without_cover.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVER'] in selected["style"])
|
self.assertTrue(self.settings['HEADER_COVER'] in selected["style"])
|
||||||
|
|
||||||
def test_article_theme_cover(self):
|
def test_article_theme_cover(self):
|
||||||
rstPath="content/article_without_cover.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -99,56 +66,37 @@ class ArticleCoverImageTest(unittest.TestCase):
|
||||||
def test_article_header_color(self):
|
def test_article_header_color(self):
|
||||||
self.settings['HEADER_COLOR']='blue'
|
self.settings['HEADER_COLOR']='blue'
|
||||||
rstPath="content/article_without_cover.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"])
|
self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"])
|
||||||
|
|
||||||
def test_article_http_cover(self):
|
def test_article_http_cover(self):
|
||||||
rstPath="content/article_with_http_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(result.cover in selected["style"])
|
self.assertTrue(result.cover in selected["style"])
|
||||||
|
|
||||||
def test_article_og_cover(self):
|
def test_article_og_cover(self):
|
||||||
rstPath="content/article_with_og_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(result.og_image in selected["style"])
|
self.assertTrue(result.og_image in selected["style"])
|
||||||
|
|
||||||
class PageCoverImageTest(unittest.TestCase):
|
class PageCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
self.initSettings()
|
||||||
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 tearDown(self):
|
def tearDown(self):
|
||||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
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):
|
def test_page_cover(self):
|
||||||
self.settings['SITEURL']="http://www.example.com"
|
self.settings['SITEURL']="http://www.example.com"
|
||||||
rstPath="content/pages/page_with_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+result.cover in selected["style"])
|
||||||
|
@ -156,7 +104,7 @@ class PageCoverImageTest(unittest.TestCase):
|
||||||
def test_page_header_cover(self):
|
def test_page_header_cover(self):
|
||||||
self.settings['HEADER_COVER']='/assets/images/header_cover.jpg'
|
self.settings['HEADER_COVER']='/assets/images/header_cover.jpg'
|
||||||
rstPath="content/pages/page_without_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVER'] in selected["style"])
|
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):
|
def test_page_header_http_cover(self):
|
||||||
self.settings['HEADER_COVER']='http://example.com/cover.jpg'
|
self.settings['HEADER_COVER']='http://example.com/cover.jpg'
|
||||||
rstPath="content/pages/page_without_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVER'] in selected["style"])
|
self.assertTrue(self.settings['HEADER_COVER'] in selected["style"])
|
||||||
|
|
||||||
def test_page_theme_cover(self):
|
def test_page_theme_cover(self):
|
||||||
rstPath="content/pages/page_without_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -179,54 +127,35 @@ class PageCoverImageTest(unittest.TestCase):
|
||||||
def test_page_header_color(self):
|
def test_page_header_color(self):
|
||||||
self.settings['HEADER_COLOR']='blue'
|
self.settings['HEADER_COLOR']='blue'
|
||||||
rstPath="content/pages/page_without_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"])
|
self.assertTrue(self.settings['HEADER_COLOR'] in selected["style"])
|
||||||
|
|
||||||
def test_page_http_cover(self):
|
def test_page_http_cover(self):
|
||||||
rstPath="content/pages/page_with_http_cover_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(result.cover in selected["style"])
|
self.assertTrue(result.cover in selected["style"])
|
||||||
|
|
||||||
def test_page_og_cover(self):
|
def test_page_og_cover(self):
|
||||||
rstPath="content/pages/page_with_og_image.rst"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(result.og_image in selected["style"])
|
self.assertTrue(result.og_image in selected["style"])
|
||||||
|
|
||||||
class TagCoverImageTest(unittest.TestCase):
|
class TagCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
self.initSettings()
|
||||||
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)
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
locale.setlocale(locale.LC_ALL, self.old_locale)
|
||||||
|
|
||||||
def test_footag_theme_cover(self):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -236,7 +165,7 @@ class TagCoverImageTest(unittest.TestCase):
|
||||||
self.settings['HEADER_COVERS_BY_TAG'] = {
|
self.settings['HEADER_COVERS_BY_TAG'] = {
|
||||||
tagName: "/assets/images/foo_tag_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"])
|
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'] = {
|
self.settings['HEADER_COVERS_BY_TAG'] = {
|
||||||
tagName: "http://examble.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"])
|
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):
|
def test_footag_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_footag_header_http_cover(self):
|
def test_footag_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_footag_header_color(self):
|
def test_footag_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
||||||
def test_bartag_theme_cover(self):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -284,7 +213,7 @@ class TagCoverImageTest(unittest.TestCase):
|
||||||
self.settings['HEADER_COVERS_BY_TAG'] = {
|
self.settings['HEADER_COVERS_BY_TAG'] = {
|
||||||
tagName: "/assets/images/bar_tag_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"])
|
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'] = {
|
self.settings['HEADER_COVERS_BY_TAG'] = {
|
||||||
tagName: "http://examble.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVERS_BY_TAG'][tagName] in selected["style"])
|
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):
|
def test_bartag_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_bartag_header_http_cover(self):
|
def test_bartag_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_bartag_header_color(self):
|
def test_bartag_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
||||||
|
|
||||||
class CategoryCoverImageTest(unittest.TestCase):
|
class CategoryCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
self.initSettings()
|
||||||
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 tearDown(self):
|
def tearDown(self):
|
||||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
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):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -360,7 +270,7 @@ class CategoryCoverImageTest(unittest.TestCase):
|
||||||
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
||||||
categoryName: "/assets/images/foo_category_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"])
|
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'] = {
|
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
||||||
categoryName: "http://examble.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"])
|
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):
|
def test_foo_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_foo_header_http_cover(self):
|
def test_foo_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_foo_header_color(self):
|
def test_foo_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
||||||
def test_bar_theme_cover(self):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
||||||
|
@ -408,7 +318,7 @@ class CategoryCoverImageTest(unittest.TestCase):
|
||||||
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
||||||
categoryName: "/assets/images/bar_category_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"])
|
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'] = {
|
self.settings['HEADER_COVERS_BY_CATEGORY'] = {
|
||||||
categoryName: "http://examble.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['HEADER_COVERS_BY_CATEGORY'][categoryName] in selected["style"])
|
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):
|
def test_bar_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_bar_header_http_cover(self):
|
def test_bar_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_bar_header_color(self):
|
def test_bar_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
||||||
class AuthorCoverImageTest(unittest.TestCase):
|
class AuthorCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
self.initSettings()
|
||||||
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 tearDown(self):
|
def tearDown(self):
|
||||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
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):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
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"
|
'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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"])
|
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"
|
'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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"])
|
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):
|
def test_arul_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_arul_header_http_cover(self):
|
def test_arul_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_arul_header_color(self):
|
def test_arul_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
||||||
def test_raj_theme_cover(self):
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
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"
|
'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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"])
|
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"
|
'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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['AUTHORS_BIO'][authorName]['cover'] in selected["style"])
|
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):
|
def test_raj_header_cover(self):
|
||||||
self.settings['SITEURL'] = "http://example.com"
|
self.settings['SITEURL'] = "http://example.com"
|
||||||
self.settings["HEADER_COVER"] = "/assets/images/header_cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings['SITEURL']+'/'+self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_raj_header_http_cover(self):
|
def test_raj_header_http_cover(self):
|
||||||
self.settings["HEADER_COVER"] = "http://example.com/cover.jpg"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COVER"] in selected["style"])
|
||||||
|
|
||||||
def test_raj_header_color(self):
|
def test_raj_header_color(self):
|
||||||
self.settings["HEADER_COLOR"] = "red"
|
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"})
|
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
self.assertTrue(self.settings["HEADER_COLOR"] in selected["style"])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue