added tests

This commit is contained in:
Wlodek Bzyl 2009-07-05 18:00:34 +02:00
parent 3eb2bb6683
commit 4e679f85a3
3 changed files with 28 additions and 103 deletions

13
test/sinatra_app.rb Normal file
View File

@ -0,0 +1,13 @@
require 'rubygems'
require 'sinatra'
require 'sinatra/url_for'
get "/" do
content_type "text/plain"
<<"EOD"
#{url_for("/")}
#{url_for("/foo")}
#{url_for("/foo", :full)}
EOD
end

View File

@ -1,91 +1,24 @@
require File.dirname(__FILE__) + '/test_helper'
require 'sinatra_app'
require 'test/unit'
require 'rack/test'
class SinatraRDiscountTest < Test::Unit::TestCase
set :environment, :test
class SintraStaticAssetsTest < Test::Unit::TestCase
include Rack::Test::Methods
def rdiscount_app(&block)
mock_app {
set :views, File.dirname(__FILE__) + '/views'
helpers Sinatra::RDiscount
set :show_exceptions, false
get '/', &block
}
get '/'
end
def test_renders_inline_strings
rdiscount_app { rdiscount 'hello world' }
assert last_response.ok?
assert_equal "<p>hello world</p>\n", last_response.body
end
def test_renders_inline_erb_string
rdiscount_app { rdiscount '{%= 1 + 1 %}' }
assert last_response.ok?
assert_equal "<p>2</p>\n", last_response.body
def app
Sinatra::Application
end
def test_renders_files_in_views_path
rdiscount_app { rdiscount :hello }
assert last_response.ok?
assert_equal "<h1>hello world</h1>\n", last_response.body
end
def test_takes_locals_option
rdiscount_app {
locals = {:foo => 'Bar'}
rdiscount "{%= foo %}", :locals => locals
}
assert last_response.ok?
assert_equal "<p>Bar</p>\n", last_response.body
end
def test_renders_with_inline_layouts
rdiscount_app {
rdiscount 'Sparta', :layout => 'THIS. IS. <%= yield.upcase %>'
}
assert last_response.ok?
assert_equal "THIS. IS. <P>SPARTA</P>\n", last_response.body
end
def test_renders_with_file_layouts
rdiscount_app {
rdiscount 'hello world', :layout => :layout2
}
assert last_response.ok?
assert_equal "erb layout\n<p>hello world</p>\n\n", last_response.body
end
def test_renders_erb_with_blocks
mock_app {
set :views, File.dirname(__FILE__) + '/views'
helpers Sinatra::RDiscount
def container
yield
end
def is;
"THIS. IS. SPARTA!"
end
get '/' do
rdiscount '{% container do %} {%= is %} {% end %}'
end
}
def test_it_says_hello_world
get '/'
assert last_response.ok?
assert_equal "<p> THIS. IS. SPARTA! </p>\n", last_response.body
assert_equal 'Hello World', last_response.body
end
def test_raises_error_if_template_not_found
mock_app {
set :views, File.dirname(__FILE__) + '/views'
helpers Sinatra::RDiscount
set :show_exceptions, false
get('/') { rdiscount :no_such_template }
}
assert_raise(Errno::ENOENT) { get('/') }
def test_it_says_hello_to_a_person
get '/', :name => 'Simon'
assert last_response.body.include?('Simon')
end
end

View File

@ -1,21 +0,0 @@
require 'rubygems'
require 'test/unit'
require 'rack/test'
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'sinatra/rdiscount'
require 'rdiscount'
class Test::Unit::TestCase
include Rack::Test::Methods
attr_reader :app
# Sets up a Sinatra::Base subclass defined with the block
# given. Used in setup or individual spec methods to establish
# the application.
def mock_app(base=Sinatra::Base, &block)
@app = Sinatra.new(base, &block)
end
end