require 'spec_helper' describe "Roadie functionality" do def parse_html(html) Nokogiri::HTML.parse(html) end it "adds missing structure" do html = "
Check out these awesome prices!
HTML document.add_css <<-CSS em { color: red; } h1 { text-align: center; } CSS result = parse_html document.transform expect(result).to have_styling('text-align' => 'center').at_selector('h1') expect(result).to have_styling('color' => 'red').at_selector('p > em') end it "stores styles that cannot be inlined in the " do document = Roadie::Document.new <<-HTMLCheck out these awesome prices!
HTML css = <<-CSS em:hover { color: red; } p:fung-shuei { color: spirit; } CSS document.add_css css expect(Roadie::Utils).to receive(:warn).with(/fung-shuei/) result = parse_html document.transform expect(result).to have_selector("html > head > style") styles = result.at_css("html > head > style").text expect(styles).to include Roadie::Stylesheet.new("", css).to_s end it "can be configured to skip styles that cannot be inlined" do document = Roadie::Document.new <<-HTMLCheck out these awesome prices!
HTML css = <<-CSS em:hover { color: red; } p:fung-shuei { color: spirit; } CSS document.add_css css document.keep_uninlinable_css = false expect(Roadie::Utils).to receive(:warn).with(/fung-shuei/) result = parse_html document.transform expect(result).to_not have_selector("html > head > style") end it "inlines css from disk" do document = Roadie::Document.new <<-HTMLCheck out these awesome prices!
HTML result = parse_html document.transform expect(result).to have_styling('font-size' => '200%').at_selector('p > em') end it "crashes when stylesheets cannot be found, unless using NullProvider" do document = Roadie::Document.new <<-HTML HTML expect { document.transform }.to raise_error(Roadie::CssNotFound, /does_not_exist\.css/) document.asset_providers << Roadie::NullProvider.new expect { document.transform }.to_not raise_error end it "ignores external css if no external providers are added" do document = Roadie::Document.new <<-HTMLCheck out these awesome prices!
HTML document.external_asset_providers = [] result = parse_html document.transform expect(result).to have_selector('head > link') expect(result).to have_styling([]).at_selector('p > em') end it "inlines external css if configured" do document = Roadie::Document.new <<-HTMLCheck out these awesome prices!
HTML document.external_asset_providers = TestProvider.new( "http://example.com/big_em.css" => "em { font-size: 200%; }" ) result = parse_html document.transform expect(result).to have_styling('font-size' => '200%').at_selector('p > em') expect(result).to_not have_selector('head > link') end it "does not inline the same properties several times" do document = Roadie::Document.new <<-HTMLHello world
HTML document.asset_providers = TestProvider.new("hello.css" => <<-CSS) p { color: red; } .hello { color: red; } .world { color: red; } CSS result = parse_html document.transform expect(result).to have_styling([ ['color', 'red'] ]).at_selector('p') end it "makes URLs absolute" do document = Roadie::Document.new <<-HTMLOne | 1 |
Two | 2 |