diff --git a/features/post_data.feature b/features/post_data.feature index 45c29560..87920237 100644 --- a/features/post_data.feature +++ b/features/post_data.feature @@ -78,10 +78,10 @@ Feature: Post data And I have the following post in "movies/scifi": | title | date | layout | content | | Star Wars | 3/27/2009 | simple | Luke, I am your father. | - And I have a simple layout that contains "Post categories: {{ site.posts.first.categories }}" + And I have a simple layout that contains "Post categories: {{ site.posts.first.categories | array_to_sentence_string }}" When I run jekyll Then the _site directory should exist - And I should see "Post categories: movies scifi" in "_site/movies/scifi/2009/03/27/star-wars.html" + And I should see "Post categories: movies and scifi" in "_site/movies/scifi/2009/03/27/star-wars.html" Scenario: Use post.categories variable when category is in YAML Given I have a _posts directory @@ -92,30 +92,31 @@ Feature: Post data And I have a simple layout that contains "Post category: {{ site.posts.first.categories }}" When I run jekyll Then the _site directory should exist - And I should see "Post categories: movies" in "_site/movies/2009/03/27/star-wars.html" + And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" Scenario: Use post.categories variable when categories are in YAML Given I have a _posts directory And I have a _layouts directory And I have the following post: - | title | date | layout | categories | content | - | Star Wars | 3/27/2009 | simple | movies, scifi | Luke, I am your father. | - And I have a simple layout that contains "Post categories: {{ site.posts.first.categories }}" + | title | date | layout | categories | content | + | Star Wars | 3/27/2009 | simple | ['movies', 'scifi'] | Luke, I am your father. | + And I have a simple layout that contains "Post categories: {{ site.posts.first.categories | array_to_sentence_string }}" When I run jekyll Then the _site directory should exist - And I should see "Post categories: movies scifi" in "_site/movies/scifi/2009/03/27/star-wars.html" + And I should see "Post categories: movies and scifi" in "_site/movies/scifi/2009/03/27/star-wars.html" Scenario: Use post.topics variable Given I have a _posts directory And I have a _posts/movies directory And I have a _posts/movies/scifi directory - And I have the following post: + And I have a _layouts directory + And I have the following post under "movies/scifi": | title | date | layout | content | | Star Wars | 3/27/2009 | simple | Luke, I am your father. | - And I have a simple layout that contains "Post topics: {{ site.posts.first.topics }}" + And I have a simple layout that contains "Post topics: {{ site.posts.first.topics | array_to_sentence_string }}" When I run jekyll Then the _site directory should exist - And I should see "Post topics: movies scifi" in "_site/2009/03/27/star-wars.html" + And I should see "Post topics: movies and scifi" in "_site/2009/03/27/star-wars.html" Scenario: Disable a post from being published Given I have a _posts directory diff --git a/features/step_definitions/jekyll_steps.rb b/features/step_definitions/jekyll_steps.rb index 61d09e91..ad2d5cfb 100644 --- a/features/step_definitions/jekyll_steps.rb +++ b/features/step_definitions/jekyll_steps.rb @@ -39,14 +39,21 @@ Given /^I have a (.*) directory$/ do |dir| FileUtils.mkdir(dir) end -Given /^I have the following posts?(?: in "(.*)")?:$/ do |dir, table| +Given /^I have the following posts?(?: (.*) "(.*)")?:$/ do |direction, folder, table| table.hashes.each do |post| date = Date.parse(post['date']).strftime('%Y-%m-%d') title = post['title'].downcase.gsub(/[^\w]/, " ").strip.gsub(/\s+/, '-') - path = File.join(dir || '', '_posts', "#{date}-#{title}.#{post['type'] || 'textile'}") + + if direction && direction == "in" + before = folder || '.' + elsif direction && direction == "under" + after = folder || '.' + end + + path = File.join(before || '.', '_posts', after || '.', "#{date}-#{title}.#{post['type'] || 'textile'}") matter_hash = {} - %w(title layout tags).each do |key| + %w(title layout tags category categories).each do |key| matter_hash[key] = post[key] if post[key] end matter = matter_hash.map { |k, v| "#{k}: #{v}\n" }.join.chomp