require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe HtmlHeadHelper do
describe "render_js_includes" do
helper do
def javascript_includes
[
["some_js.js", {:plugin => :blacklight}],
["other_js"]
]
end
end
it "should include script tags specified in controller#javascript_includes" do
html = helper.render_js_includes
if use_asset_pipeline?
html.should have_selector("script[src='/assets/some_js.js'][type='text/javascript']")
html.should have_selector("script[src='/assets/other_js.js'][type='text/javascript']")
else
html.should have_selector("script[src='/javascripts/some_js.js'][type='text/javascript']")
html.should have_selector("script[src='/javascripts/other_js.js'][type='text/javascript']")
end
html.html_safe?.should == true
end
end
describe "render_stylesheet_links" do
helper do
def stylesheet_links
[
["my_stylesheet", {:plugin => :blacklight}],
["other_stylesheet"]
]
end
end
it "should render stylesheets specified in controller #stylesheet_links" do
html = helper.render_stylesheet_includes
if use_asset_pipeline?
html.should have_selector("link[href='/assets/my_stylesheet.css'][rel='stylesheet'][type='text/css']")
html.should have_selector("link[href='/assets/other_stylesheet.css'][rel='stylesheet'][type='text/css']")
else
html.should have_selector("link[href='/stylesheets/my_stylesheet.css'][rel='stylesheet'][type='text/css']")
html.should have_selector("link[href='/stylesheets/other_stylesheet.css'][rel='stylesheet'][type='text/css']")
end
html.html_safe?.should == true
end
end
describe "render_extra_head_content" do
helper do
def extra_head_content
['', '']
end
end
it "should include content specified in controller#extra_head_content" do
html = helper.render_extra_head_content
html.should have_selector("link[rel=a]")
html.should have_selector("link[rel=b]")
html.html_safe?.should == true
end
end
describe "render_head_content" do
describe "with no methods defined" do
it "should return empty string without complaint" do
lambda {helper.render_head_content}.should_not raise_error
helper.render_head_content.should be_blank
helper.render_head_content.html_safe?.should == true
end
end
describe "with methods defined" do
it "should include all head content" do
helper.should_receive(:render_extra_head_content).and_return("".html_safe)
helper.should_receive(:render_js_includes).and_return("".html_safe)
helper.should_receive(:render_stylesheet_includes).and_return("".html_safe)
helper.should_receive(:content_for).with(:head).and_return("".html_safe)
helper.render_head_content.should be_html_safe
end
end
end
private
def use_asset_pipeline?
(Rails::VERSION::MAJOR >= 3 and Rails::VERSION::MINOR >= 1) and Rails.application.config.assets.enabled
end
end