Merge branch 'qrush/shoulda' into can_has_good_tests
Conflicts: test/test_generated_site.rb test/test_post.rb test/test_site.rb test/test_tags.rb
This commit is contained in:
commit
18b512a531
|
@ -2,6 +2,7 @@ require File.join(File.dirname(__FILE__), *%w[.. lib jekyll])
|
|||
|
||||
require 'test/unit'
|
||||
require 'redgreen'
|
||||
require 'shoulda'
|
||||
|
||||
include Jekyll
|
||||
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class TestFilters < Test::Unit::TestCase
|
||||
|
||||
class JekyllFilter
|
||||
include Jekyll::Filters
|
||||
end
|
||||
|
||||
def setup
|
||||
context "filters" do
|
||||
setup do
|
||||
@filter = JekyllFilter.new
|
||||
end
|
||||
|
||||
def test_textilize_with_simple_string
|
||||
should "textilize with simple string" do
|
||||
assert_equal "<p>something <strong>really</strong> simple</p>", @filter.textilize("something *really* simple")
|
||||
end
|
||||
|
||||
def test_array_to_sentence_string_with_no_args
|
||||
should "convert array to sentence string with no args" do
|
||||
assert_equal "", @filter.array_to_sentence_string([])
|
||||
end
|
||||
|
||||
def test_array_to_sentence_string_with_one_arg
|
||||
should "convert array to sentence string with one arg" do
|
||||
assert_equal "1", @filter.array_to_sentence_string([1])
|
||||
assert_equal "chunky", @filter.array_to_sentence_string(["chunky"])
|
||||
end
|
||||
|
||||
def test_array_to_sentence_string_with_two_args
|
||||
should "convert array to sentence string with two args" do
|
||||
assert_equal "1 and 2", @filter.array_to_sentence_string([1, 2])
|
||||
assert_equal "chunky and bacon", @filter.array_to_sentence_string(["chunky", "bacon"])
|
||||
end
|
||||
|
||||
def test_array_to_sentence_string_with_multiple_args
|
||||
should "convert array to sentence string with multiple args" do
|
||||
assert_equal "1, 2, 3, and 4", @filter.array_to_sentence_string([1, 2, 3, 4])
|
||||
assert_equal "chunky, bacon, bits, and pieces", @filter.array_to_sentence_string(["chunky", "bacon", "bits", "pieces"])
|
||||
end
|
||||
|
||||
def test_xml_escape_with_ampersands
|
||||
should "escape xml with ampersands" do
|
||||
assert_equal "AT&T", @filter.xml_escape("AT&T")
|
||||
assert_equal "<code>command &lt;filename&gt;</code>", @filter.xml_escape("<code>command <filename></code>")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,38 +1,36 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class TestGeneratedSite < Test::Unit::TestCase
|
||||
def setup
|
||||
context "generated sites" do
|
||||
setup do
|
||||
clear_dest
|
||||
@config = Jekyll::DEFAULTS.clone
|
||||
@config['source'] = File.join(File.dirname(__FILE__), *%w[source])
|
||||
@config['destination'] = dest_dir
|
||||
Jekyll.configure(@config)
|
||||
@s = Site.new(@config)
|
||||
@source = File.join(File.dirname(__FILE__), *%w[source])
|
||||
@s = Site.new(@source, dest_dir)
|
||||
@s.process
|
||||
@index = File.read(File.join(dest_dir, 'index.html'))
|
||||
end
|
||||
|
||||
def test_site_posts_in_index
|
||||
# confirm that {{ site.posts }} is working
|
||||
should "insert site.posts into the index" do
|
||||
assert @index.include?("#{@s.posts.size} Posts")
|
||||
end
|
||||
|
||||
def test_post_content_in_index
|
||||
# confirm that the {{ post.content }} is rendered OK
|
||||
latest_post = Dir[File.join(@config['source'], '_posts/*')].last
|
||||
post = Post.new(@config['source'], '', File.basename(latest_post))
|
||||
should "render post.content" do
|
||||
latest_post = Dir[File.join(@source, '_posts/*')].last
|
||||
post = Post.new(@source, '', File.basename(latest_post))
|
||||
Jekyll.content_type = post.determine_content_type
|
||||
post.transform
|
||||
assert @index.include?(post.content)
|
||||
end
|
||||
|
||||
def test_unpublished_posts_are_hidden
|
||||
should "hide unpublished posts" do
|
||||
published = Dir[File.join(dest_dir, 'publish_test/2008/02/02/*.html')].map {|f| File.basename(f)}
|
||||
|
||||
assert_equal 1, published.size
|
||||
assert_equal "published.html", published.first
|
||||
end
|
||||
|
||||
def test_posts_directory_not_copied
|
||||
should "not copy _posts directory" do
|
||||
assert !File.exist?(File.join(dest_dir, '_posts'))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class TestPost < Test::Unit::TestCase
|
||||
def setup
|
||||
Jekyll.configure(Jekyll::DEFAULTS)
|
||||
end
|
||||
|
||||
def test_valid
|
||||
should "ensure valid posts are valid" do
|
||||
assert Post.valid?("2008-10-19-foo-bar.textile")
|
||||
assert Post.valid?("foo/bar/2008-10-19-foo-bar.textile")
|
||||
|
||||
|
@ -13,132 +9,127 @@ class TestPost < Test::Unit::TestCase
|
|||
assert !Post.valid?("blah")
|
||||
end
|
||||
|
||||
def test_process
|
||||
p = Post.allocate
|
||||
p.process("2008-10-19-foo-bar.textile")
|
||||
|
||||
assert_equal Time.parse("2008-10-19"), p.date
|
||||
assert_equal "foo-bar", p.slug
|
||||
assert_equal ".textile", p.ext
|
||||
context "processing posts" do
|
||||
setup do
|
||||
@post = Post.allocate
|
||||
@real_file = "2008-10-18-foo-bar.textile"
|
||||
@fake_file = "2008-10-19-foo-bar.textile"
|
||||
@source = File.join(File.dirname(__FILE__), *%w[source _posts])
|
||||
end
|
||||
|
||||
def test_url
|
||||
p = Post.allocate
|
||||
p.categories = []
|
||||
p.process("2008-10-19-foo-bar.textile")
|
||||
should "keep date, title, and markup type" do
|
||||
@post.process(@fake_file)
|
||||
|
||||
assert_equal "/2008/10/19/foo-bar.html", p.url
|
||||
assert_equal Time.parse("2008-10-19"), @post.date
|
||||
assert_equal "foo-bar", @post.slug
|
||||
assert_equal ".textile", @post.ext
|
||||
end
|
||||
|
||||
def test_permalink
|
||||
p = Post.allocate
|
||||
p.process("2008-12-03-permalinked-post.textile")
|
||||
p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
|
||||
|
||||
assert_equal "my_category/permalinked-post", p.permalink
|
||||
should "create url based on date and title" do
|
||||
@post.categories = []
|
||||
@post.process(@fake_file)
|
||||
assert_equal "/2008/10/19/foo-bar.html", @post.url
|
||||
end
|
||||
|
||||
def test_dir_respects_permalink
|
||||
p = Post.allocate
|
||||
p.process("2008-12-03-permalinked-post.textile")
|
||||
p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
|
||||
should "respect permalink" do
|
||||
file = "2008-12-03-permalinked-post.textile"
|
||||
@post.process(file)
|
||||
@post.read_yaml(@source, file)
|
||||
|
||||
assert_equal "my_category/", p.dir
|
||||
assert_equal "my_category/permalinked-post", @post.permalink
|
||||
assert_equal "my_category/", @post.dir
|
||||
assert_equal "my_category/permalinked-post", @post.url
|
||||
end
|
||||
|
||||
def test_url_respects_permalink
|
||||
p = Post.allocate
|
||||
p.process("2008-12-03-permalinked-post.textile")
|
||||
p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
|
||||
should "read yaml front-matter" do
|
||||
@post.read_yaml(@source, @real_file)
|
||||
|
||||
assert_equal "my_category/permalinked-post", p.url
|
||||
assert_equal({"title" => "Foo Bar", "layout" => "default"}, @post.data)
|
||||
assert_equal "\nh1. {{ page.title }}\n\nBest *post* ever", @post.content
|
||||
end
|
||||
|
||||
def test_read_yaml
|
||||
p = Post.allocate
|
||||
p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
|
||||
should "transform textile" do
|
||||
@post.process(@real_file)
|
||||
@post.read_yaml(@source, @real_file)
|
||||
@post.transform
|
||||
|
||||
assert_equal({"title" => "Foo Bar", "layout" => "default"}, p.data)
|
||||
assert_equal "\nh1. {{ page.title }}\n\nBest *post* ever", p.content
|
||||
end
|
||||
|
||||
def test_transform
|
||||
p = Post.allocate
|
||||
p.process("2008-10-18-foo-bar.textile")
|
||||
p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
|
||||
p.transform
|
||||
|
||||
assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", p.content
|
||||
end
|
||||
|
||||
def test_published
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-02-02-published.textile")
|
||||
assert_equal true, p.published
|
||||
end
|
||||
|
||||
def test_not_published
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-02-02-not-published.textile")
|
||||
assert_equal false, p.published
|
||||
end
|
||||
|
||||
def test_yaml_category
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2009-01-27-category.textile")
|
||||
assert p.categories.include?('foo')
|
||||
end
|
||||
|
||||
def test_yaml_categories
|
||||
p1 = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '',
|
||||
"2009-01-27-categories.textile")
|
||||
p2 = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '',
|
||||
"2009-01-27-array-categories.textile")
|
||||
|
||||
[p1, p2].each do |p|
|
||||
assert p.categories.include?('foo')
|
||||
assert p.categories.include?('bar')
|
||||
assert p.categories.include?('baz')
|
||||
assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", @post.content
|
||||
end
|
||||
end
|
||||
|
||||
def test_render
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile")
|
||||
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
||||
p.render(layouts, {"site" => {"posts" => []}})
|
||||
|
||||
assert_equal "<<< <h1>Foo Bar</h1>\n<p>Best <strong>post</strong> ever</p> >>>", p.output
|
||||
context "initializing posts" do
|
||||
setup do
|
||||
@setup_post = lambda do |file|
|
||||
Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', file)
|
||||
end
|
||||
end
|
||||
|
||||
def test_write
|
||||
should "publish when published yaml is no specified" do
|
||||
post = @setup_post.call("2008-02-02-published.textile")
|
||||
assert_equal true, post.published
|
||||
end
|
||||
|
||||
should "not published when published yaml is false" do
|
||||
post = @setup_post.call("2008-02-02-not-published.textile")
|
||||
assert_equal false, post.published
|
||||
end
|
||||
|
||||
should "recognize category in yaml" do
|
||||
post = @setup_post.call("2009-01-27-category.textile")
|
||||
assert post.categories.include?('foo')
|
||||
end
|
||||
|
||||
should "recognize several categories in yaml" do
|
||||
post = @setup_post.call("2009-01-27-categories.textile")
|
||||
assert post.categories.include?('foo')
|
||||
assert post.categories.include?('bar')
|
||||
assert post.categories.include?('baz')
|
||||
end
|
||||
|
||||
context "rendering" do
|
||||
setup do
|
||||
clear_dest
|
||||
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile")
|
||||
@render = lambda do |post|
|
||||
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
||||
p.render(layouts, {"site" => {"posts" => []}})
|
||||
p.write(dest_dir)
|
||||
post.render(layouts, {"site" => {"posts" => []}})
|
||||
end
|
||||
end
|
||||
|
||||
def test_data
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-11-21-complex.textile")
|
||||
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
||||
p.render(layouts, {"site" => {"posts" => []}})
|
||||
|
||||
assert_equal "<<< <p>url: /2008/11/21/complex.html<br />\ndate: #{Time.parse("2008-11-21")}<br />\nid: /2008/11/21/complex</p> >>>", p.output
|
||||
should "render properly" do
|
||||
post = @setup_post.call("2008-10-18-foo-bar.textile")
|
||||
@render.call(post)
|
||||
assert_equal "<<< <h1>Foo Bar</h1>\n<p>Best <strong>post</strong> ever</p> >>>", post.output
|
||||
end
|
||||
|
||||
def test_categories_and_topics
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), 'foo', 'bar/2008-12-12-topical-post.textile')
|
||||
assert_equal ['foo'], p.categories
|
||||
assert_equal ['bar'], p.topics
|
||||
should "write properly" do
|
||||
post = @setup_post.call("2008-10-18-foo-bar.textile")
|
||||
@render.call(post)
|
||||
post.write(dest_dir)
|
||||
|
||||
assert File.directory?(dest_dir)
|
||||
assert File.exists?(File.join(dest_dir, '2008', '10', '18', 'foo-bar.html'))
|
||||
end
|
||||
|
||||
def test_include
|
||||
config = Jekyll::DEFAULTS.clone
|
||||
config['source'] = File.join(File.dirname(__FILE__), *%w[source])
|
||||
Jekyll.configure(config)
|
||||
should "insert data" do
|
||||
post = @setup_post.call("2008-11-21-complex.textile")
|
||||
@render.call(post)
|
||||
|
||||
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-12-13-include.markdown")
|
||||
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
||||
p.render(layouts, {"site" => {"posts" => []}})
|
||||
assert_equal "<<< <p>url: /2008/11/21/complex.html<br />\ndate: #{Time.parse("2008-11-21")}<br />\nid: /2008/11/21/complex</p> >>>", post.output
|
||||
end
|
||||
|
||||
assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", p.output
|
||||
should "include templates" do
|
||||
Jekyll.source = File.join(File.dirname(__FILE__), 'source')
|
||||
post = @setup_post.call("2008-12-13-include.markdown")
|
||||
@render.call(post)
|
||||
|
||||
assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", post.output
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
should "generate categories and topics" do
|
||||
post = Post.new(File.join(File.dirname(__FILE__), *%w[source]), 'foo', 'bar/2008-12-12-topical-post.textile')
|
||||
assert_equal ['foo'], post.categories
|
||||
assert_equal ['bar'], post.topics
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,43 +1,36 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class TestSite < Test::Unit::TestCase
|
||||
def setup
|
||||
@config = Jekyll::DEFAULTS.clone
|
||||
@config['source'] = File.join(File.dirname(__FILE__), *%w[source])
|
||||
@config['destination'] = dest_dir
|
||||
Jekyll.configure(@config)
|
||||
@s = Site.new(@config)
|
||||
context "creating sites" do
|
||||
setup do
|
||||
@source = File.join(File.dirname(__FILE__), 'source')
|
||||
@s = Site.new(@source, dest_dir)
|
||||
end
|
||||
|
||||
def test_site_init
|
||||
|
||||
end
|
||||
|
||||
def test_read_layouts
|
||||
should "read layouts" do
|
||||
@s.read_layouts
|
||||
|
||||
assert_equal ["default", "simple"].sort, @s.layouts.keys.sort
|
||||
end
|
||||
|
||||
def test_read_posts
|
||||
should "read posts" do
|
||||
@s.read_posts('')
|
||||
posts = Dir[File.join(@config['source'], '_posts/*')]
|
||||
posts = Dir[File.join(@source, '_posts/*')]
|
||||
assert_equal posts.size - 1, @s.posts.size
|
||||
end
|
||||
|
||||
def test_site_payload
|
||||
should "deploy payload" do
|
||||
clear_dest
|
||||
@s.process
|
||||
|
||||
posts = Dir[File.join(@config['source'], "**", "_posts/*")]
|
||||
posts = Dir[File.join(@source, "**", "_posts/*")]
|
||||
categories = %w(bar baz category foo z_category publish_test).sort
|
||||
|
||||
assert_equal posts.size - 1, @s.posts.size
|
||||
assert_equal categories, @s.categories.keys.sort
|
||||
assert_equal 4, @s.categories['foo'].size
|
||||
assert_equal 3, @s.categories['foo'].size
|
||||
end
|
||||
|
||||
def test_filter_entries
|
||||
should "filter entries" do
|
||||
ent1 = %w[foo.markdown bar.markdown baz.markdown #baz.markdown#
|
||||
.baz.markdow foo.markdown~]
|
||||
ent2 = %w[.htaccess _posts bla.bla]
|
||||
|
@ -45,4 +38,5 @@ class TestSite < Test::Unit::TestCase
|
|||
assert_equal %w[foo.markdown bar.markdown baz.markdown], @s.filter_entries(ent1)
|
||||
assert_equal ent2, @s.filter_entries(ent2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class TestTags < Test::Unit::TestCase
|
||||
|
||||
def setup
|
||||
context "tagging" do
|
||||
setup do
|
||||
@content = <<CONTENT
|
||||
---
|
||||
layout: post
|
||||
|
@ -19,13 +19,13 @@ puts "bye"
|
|||
CONTENT
|
||||
end
|
||||
|
||||
def test_markdown_with_pygments_line_handling
|
||||
should "render markdown with pygments line handling" do
|
||||
Jekyll.pygments = true
|
||||
context = {"content_type" => 'markdown'}
|
||||
Jekyll.content_type = :markdown
|
||||
|
||||
result = Liquid::Template.parse(@content).render(context, [Jekyll::Filters])
|
||||
result = Jekyll.markdown(result)
|
||||
result = Liquid::Template.parse(@content).render({}, [Jekyll::Filters])
|
||||
result = Jekyll.markdown_proc.call(result)
|
||||
assert_no_match(/markdown\-html\-error/,result)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue