require File.join(File.dirname(__FILE__), 'rails', 'test_preamble')
class MarkabyController < ActionController::Base
helper :test
@@locals = { :monkeys => Monkey.find(:all) }
def rescue_action(e) raise e end;
def index
@monkeys = Monkey.find(:all)
end
def create
flash[:message] = 'Hello World'
end
def broken
end
def partial_rendering
render :partial => 'monkeys', :locals => @@locals
end
def partial_rendering_with_stringy_keys_in_local_assigns
render :partial => 'monkeys', :locals => { 'monkeys' => Monkey.find(:all) }
end
def inline_helper_rendering
render_markaby(:locals => @@locals) { ul { monkeys.each { |m| li m.name } } }
end
def basic_inline_rendering
render :inline => mab { ul { Monkey.find(:all).each { |m| li m.name } } }
end
end
class MarkabyOnRailsTest < Test::Unit::TestCase
def setup
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@controller = MarkabyController.new
@controller.template_root = File.join(File.dirname(__FILE__), 'rails')
@expected_monkey_names = '
'
end
def test_index
process :index
assert_response :success
assert_template 'markaby/index'
assert_equal @expected_monkey_names, @response.body
end
def test_partial_rendering
Markaby::Builder.set :indent, 2
process :partial_rendering
expected_html = File.read(File.join(File.dirname(__FILE__), 'rails', 'monkeys.html'))
assert_response :success
assert_template 'markaby/_monkeys'
assert_equal expected_html, @response.body
# From actionpack/lib/action_view/base.rb:
# String keys are deprecated and will be removed shortly.
#
assert_raises ActionView::TemplateError do
process :partial_rendering_with_stringy_keys_in_local_assigns
end
end
def test_inline_helper_rendering
process :inline_helper_rendering
assert_response :success
assert_equal @expected_monkey_names, @response.body
end
def test_basic_inline_rendering
process :basic_inline_rendering
assert_response :success
assert_equal @expected_monkey_names, @response.body
end
def test_flash_and_form_tag
process :create
assert_response :success
assert_select 'form div input[type=submit]', 1
assert_select 'p', 'Hello World'
end
def test_template_error_has_correct_line_number
begin
process :broken
rescue ActionView::TemplateError => error
assert_equal 5, error.line_number.to_i
end
end
end