Skip to content

Commit

Permalink
Merge pull request #1577 from ehashman/issue1513
Browse files Browse the repository at this point in the history
Fix for #1513 ({tag}, {category} link on pages) with some new tests
  • Loading branch information
smartass101 committed Jan 2, 2015
2 parents 5a8efcd + 49668f7 commit a740f8a
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 7 deletions.
4 changes: 2 additions & 2 deletions pelican/contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,9 +257,9 @@ def replacer(m):
'limit_msg': ("Other resources were not found "
"and their urls not replaced")})
elif what == 'category':
origin = Category(path, self.settings).url
origin = '/'.join((siteurl, Category(path, self.settings).url))
elif what == 'tag':
origin = Tag(path, self.settings).url
origin = '/'.join((siteurl, Tag(path, self.settings).url))

# keep all other parts, such as query, fragment, etc.
parts = list(value)
Expand Down
7 changes: 7 additions & 0 deletions pelican/tests/TestPages/page_with_category_and_tag_links.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Title: Page with a bunch of links

My links:

[Link 1]({tag}マック)

[Link 2]({category}Yeah)
38 changes: 33 additions & 5 deletions pelican/tests/test_contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,17 +212,20 @@ def test_get_content(self):
'<a href="|tag|tagname">link</a>')
page = Page(**args)
content = page.get_content('http://notmyidea.org')
self.assertEqual(content, ('A simple test, with a '
'<a href="tag/tagname.html">link</a>'))
self.assertEqual(
content,
('A simple test, with a '
'<a href="http://notmyidea.org/tag/tagname.html">link</a>'))

# Category
args['content'] = ('A simple test, with a '
'<a href="|category|category">link</a>')
page = Page(**args)
content = page.get_content('http://notmyidea.org')
self.assertEqual(content,
('A simple test, with a '
'<a href="category/category.html">link</a>'))
self.assertEqual(
content,
('A simple test, with a '
'<a href="http://notmyidea.org/category/category.html">link</a>'))

def test_intrasite_link(self):
# type does not take unicode in PY2 and bytes in PY3, which in
Expand Down Expand Up @@ -543,6 +546,31 @@ def test_attach_link_syntax(self):
self.assertEqual(self.static.save_as, expected_save_as)
self.assertEqual(self.static.url, path_to_url(expected_save_as))

def test_tag_link_syntax(self):
"{tag} link syntax triggers url replacement."

html = '<a href="{tag}foo">link</a>'
page = Page(
content=html,
metadata={'title': 'fakepage'}, settings=self.settings,
source_path=os.path.join('dir', 'otherdir', 'fakepage.md'),
context=self.context)
content = page.get_content('')

self.assertNotEqual(content, html)

def test_category_link_syntax(self):
"{category} link syntax triggers url replacement."

html = '<a href="{category}foo">link</a>'
page = Page(content=html,
metadata={'title': 'fakepage'}, settings=self.settings,
source_path=os.path.join('dir', 'otherdir', 'fakepage.md'),
context=self.context)
content = page.get_content('')

self.assertNotEqual(content, html)


class TestURLWrapper(unittest.TestCase):
def test_comparisons(self):
Expand Down
23 changes: 23 additions & 0 deletions pelican/tests/test_generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,7 @@ def test_generate_context(self):
['This is a markdown test page', 'published', 'page'],
['This is a test page with a preset template', 'published',
'custom'],
['Page with a bunch of links', 'published', 'page'],
['A Page (Test) for sorting', 'published', 'page'],
]
hidden_pages_expected = [
Expand Down Expand Up @@ -517,6 +518,7 @@ def test_generate_sorted(self):
['This is a test page', 'published', 'page'],
['This is a markdown test page', 'published', 'page'],
['A Page (Test) for sorting', 'published', 'page'],
['Page with a bunch of links', 'published', 'page'],
['This is a test page with a preset template', 'published',
'custom'],
]
Expand All @@ -530,6 +532,7 @@ def test_generate_sorted(self):
# sort by title
pages_expected_sorted_by_title = [
['A Page (Test) for sorting', 'published', 'page'],
['Page with a bunch of links', 'published', 'page'],
['This is a markdown test page', 'published', 'page'],
['This is a test page', 'published', 'page'],
['This is a test page with a preset template', 'published',
Expand All @@ -543,6 +546,26 @@ def test_generate_sorted(self):
pages = self.distill_pages(generator.pages)
self.assertEqual(pages_expected_sorted_by_title, pages)

def test_tag_and_category_links_on_generated_pages(self):
"""
Test to ensure links of the form {tag}tagname and {category}catname
are generated correctly on pages
"""
settings = get_settings(filenames={})
settings['PAGE_PATHS'] = ['TestPages'] # relative to CUR_DIR
settings['CACHE_PATH'] = self.temp_cache
settings['DEFAULT_DATE'] = (1970, 1, 1)

generator = PagesGenerator(
context=settings.copy(), settings=settings,
path=CUR_DIR, theme=settings['THEME'], output_path=None)
generator.generate_context()
pages_by_title = {p.title: p.content for p in generator.pages}

test_content = pages_by_title['Page with a bunch of links']
self.assertIn('<a href="/category/yeah.html">', test_content)
self.assertIn('<a href="/tag/matsuku.html">', test_content)


class TestTemplatePagesGenerator(unittest.TestCase):

Expand Down

0 comments on commit a740f8a

Please sign in to comment.