Skip to content

Commit

Permalink
Resolve blog post URL.
Browse files Browse the repository at this point in the history
  • Loading branch information
mblayman committed Jun 28, 2015
1 parent 40852b5 commit 43fcd58
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
5 changes: 3 additions & 2 deletions handroll/extensions/blog.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ def __init__(self, **kwargs):
self.date = kwargs['date']
self.source_file = kwargs['source_file']
self.title = kwargs['title']
self.url = kwargs['url']


class BlogExtension(Extension):
Expand Down Expand Up @@ -72,6 +73,7 @@ def on_frontmatter_loaded(self, source_file, frontmatter):
date=frontmatter['date'],
source_file=source_file,
title=frontmatter['title'],
url=self._resolver.as_url(source_file),
))

def on_post_composition(self, director):
Expand Down Expand Up @@ -111,8 +113,7 @@ def add(self, post):
"""Add a blog post to the feed."""
entry = FeedEntry(
title=post.title,
# TODO: Dynamically generate a URL.
url='foo.html',
url=post.url,
updated=post.date,
)
self._feed.add(entry)
Expand Down
3 changes: 2 additions & 1 deletion handroll/tests/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def make_blog_post(self):
'date': datetime.datetime.today(),
'source_file': 'a_source_file.md',
'title': 'A Blog Post',
'url': 'http://www.example.com/a_source_file.html',
}
return BlogPost(**kwargs)

Expand All @@ -27,7 +28,7 @@ def make_configuration(self):
return config

def make_director(self):
config = Configuration()
config = self.make_configuration()
site = self.make_site()
return Director(config, site, [])

Expand Down
14 changes: 11 additions & 3 deletions handroll/tests/test_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,10 @@ def _add_blog_section(self, parser, exclude=None):
continue
parser.set('blog', option, value)

def _make_preprocessed_one(self, director):
def _make_preprocessed_one(self, director=None):
"""Make an instance that has all default metadata already parsed."""
if director is None:
director = self.factory.make_director()
self._add_blog_section(director.config.parser)
extension = BlogExtension(director.config)
extension.on_pre_composition(director)
Expand All @@ -134,7 +136,7 @@ def test_handles_post_composition(self):
self.assertTrue(extension.handle_post_composition)

def test_registers_blog_post(self):
extension = BlogExtension(None)
extension = self._make_preprocessed_one()
frontmatter = self._make_blog_post_frontmatter()
extension.on_frontmatter_loaded('thundercats.md', frontmatter)
post = extension.posts[0]
Expand Down Expand Up @@ -268,7 +270,7 @@ def test_adds_post(self, builder_add):
builder_add.assert_called_once_with(post)

def test_date_string_converted_to_datetime_in_frontmatter(self):
extension = BlogExtension(None)
extension = self._make_preprocessed_one()
frontmatter = self._make_blog_post_frontmatter()
extension.on_frontmatter_loaded('thundercats.md', frontmatter)
post = extension.posts[0]
Expand Down Expand Up @@ -302,3 +304,9 @@ def test_post_creates_feed_entry(self):
post = self.factory.make_blog_post()
builder.add(post)
self.assertEqual(1, len(builder._feed.entries))

def test_feed_entry_has_post_url(self):
builder = self._make_one()
post = self.factory.make_blog_post()
builder.add(post)
self.assertEqual(post.url, builder._feed.entries[0].url)

0 comments on commit 43fcd58

Please sign in to comment.