require File.expand_path("#{File.dirname(__FILE__)}/rails_spec_helper")
describe Erector::Rails do
before do
@controller = ActionController::Base.new
@controller.request = ActionController::TestRequest.new
@view = ActionView::Base.new
@view.controller = @controller
def @view.protect_against_forgery?
false
end
end
def test_render(&block)
Erector::Rails.render(Erector.inline(&block), @controller.view_context)
end
describe "#link_to" do
it "renders a link" do
test_render do
link_to 'Test', '/foo'
end.should == %{Test}
end
it "supports blocks" do
test_render do
link_to '/foo' do
strong "Test"
end
end.should == %{Test}
end
it "escapes input" do
test_render do
link_to 'This&that', '/foo?this=1&that=1'
end.should == %{This&that}
end
it "isn't double rendered when 'text link_to' is used by mistake" do
test_render do
text link_to('Test', '/foo')
end.should == %{Test}
end
end
describe "a regular helper" do
it "can be called directly" do
test_render do
text truncate("foo")
end.should == "foo"
end
it "can be called via capture" do
test_render do
text capture { text truncate("foo") }
end.should == "foo"
end
it "can be called via sub-widget" do
test_render do
widget Erector.inline { text truncate("foo") }
end.should == "foo"
end
end
describe "a named route helper" do
before do
Rails.application.routes.draw do
root :to => "rails_helpers_spec#index"
end
@app_controller = ApplicationController.new
@app_controller.request = ActionController::TestRequest.new
def app_render(&block)
Erector::Rails.render(Erector.inline(&block), @app_controller.view_context)
end
end
it "can be called directly" do
app_render do
text root_path
end.should == "/"
end
it "can be called via parent" do
app_render do
text parent.root_path
end.should == "/"
end
it "respects default_url_options defined by the controller" do
def @app_controller.default_url_options(options = nil)
{ :host => "www.override.com" }
end
app_render do
text root_url
end.should == "http://www.override.com/"
end
end
describe "#auto_discovery_link_tag" do
it "renders tag" do
test_render do
auto_discovery_link_tag(:rss, "rails")
end.should == %{}
end
end
describe "#javascript_include_tag" do
it "renders tag" do
test_render do
javascript_include_tag("rails")
end.should =~ %r{}
end
end
describe "#stylesheet_link_tag" do
it "renders tag" do
test_render do
stylesheet_link_tag("rails")
end.should == %{}
end
end
describe "#favicon_link_tag" do
it "renders tag" do
test_render do
favicon_link_tag("rails.ico")
end.should == %{}
end
end
describe "#image_tag" do
it "renders tag" do
test_render do
image_tag("/foo")
end.should == %{}
end
end
describe "#javascript_tag" do
it "renders tag" do
test_render do
javascript_tag "alert('All is good')"
end.should == %{}
end
it "supports block syntax" do
test_render do
javascript_tag do
text! "alert('All is good')"
end
end.should == %{}
end
end
if defined?(ActionView::Helpers::ScriptaculousHelper)
[:sortable_element,
:draggable_element,
:drop_receiving_element].each do |helper|
describe "##{helper}" do
it "renders helper js" do
test_render do
send(helper, "rails", :url => "/foo")
end.should =~ %r{}m
end
end
end
end
describe "#render" do
it "renders text" do
test_render do
render :text => "Test"
end.should == "Test"
end
end
describe "#form_tag" do
it "works without a block" do
test_render do
form_tag("/posts")
end.should == %{