require 'spec_helper' describe MetaInspector do it "should get the title from the head section" do page = MetaInspector.new('http://example.com') expect(page.title).to eq('An example page') end describe '#best_title' do it "should find 'head title' when that's the only thing" do page = MetaInspector.new('http://example.com/title_in_head') expect(page.best_title).to eq('This title came from the head') end it "should find 'body title' when that's the only thing" do page = MetaInspector.new('http://example.com/title_in_body') expect(page.best_title).to eq('This title came from the body, not the head') end it "should find 'og:title' when that's the only thing" do page = MetaInspector.new('http://example.com/meta-tags') expect(page.best_title).to eq('An OG title') end it "should find the first

when that's the only thing" do page = MetaInspector.new('http://example.com/title_in_h1') expect(page.best_title).to eq('This title came from the first h1') end it "should choose the best candidate from the available options" do page = MetaInspector.new('http://example.com/title_best_choice') expect(page.best_title).to eq('This OG title is the best choice, as per web standards.') end it "should strip leading and trailing whitespace and all line breaks" do page = MetaInspector.new('http://example.com/title_in_head_with_whitespace') expect(page.best_title).to eq('This title came from the head and has leading and trailing whitespace') end it "should return nil if none of the candidates are present" do page = MetaInspector.new('http://example.com/title_not_present') expect(page.best_title).to be(nil) end end describe '#author' do it "should find author from meta author" do page = MetaInspector.new('http://example.com/author_in_meta') expect(page.author).to eq("the author") end it "should be nil if no meta author" do page = MetaInspector.new('http://example.com/empty') expect(page.author).to be(nil) end end describe "#best_author" do it "should return the author meta tag content if present" do page = MetaInspector.new('http://example.com/author_in_meta') expect(page.best_author).to eq("the author") end it "should find a link with the relational attribute author if standard meta tag is not present" do page = MetaInspector.new('http://example.com/author_in_link') expect(page.best_author).to eq("This author came from a link with the author relational attribute") end it "should find the address tag if standard meta tag and relational attribute author are not present" do page = MetaInspector.new('http://example.com/author_in_body') expect(page.best_author).to eq("This author came from the address tag") end it "should return the twitter creator if address tag not present" do page = MetaInspector.new('http://example.com/author_in_twitter') expect(page.best_author).to eq("This author came from the twitter creator tag") end it "should return nil if no author information present" do page = MetaInspector.new('http://example.com/empty') expect(page.best_author).to be(nil) end end describe '#description' do it "should find description from meta description" do page = MetaInspector.new('http://example.com/desc_in_meta') expect(page.description).to eq("the standard description") end it "should be nil if no meta description" do page = MetaInspector.new('http://example.com/empty') expect(page.description).to be(nil) end end describe "#best_description" do it "should return the standard description meta tag content if present" do page = MetaInspector.new('http://example.com/desc_in_meta') expect(page.best_description).to eq("the standard description") end it "should return the og description if standard meta tag is not present" do page = MetaInspector.new('http://example.com/desc_in_og') expect(page.best_description).to eq("the og description") end it "should return the twitter description if standard and og tag not present" do page = MetaInspector.new('http://example.com/desc_in_twitter') expect(page.best_description).to eq("the twitter description") end it "should return the secondary description if no meta tag is present" do page = MetaInspector.new('http://theonion-no-description.com') expect(page.best_description).to eq("SAN FRANCISCO—In a move expected to revolutionize the mobile device industry, Apple launched its fastest and most powerful iPhone to date Tuesday, an innovative new model that can only be seen by the company's hippest and most dedicated customers. This is secondary text picked up because of a missing meta description.") end it "should return nil by default" do page = MetaInspector.new('http://example.com/empty') expect(page.best_description).to be(nil) end end end