run rubocop -a
This commit is contained in:
		
							parent
							
								
									e38becb779
								
							
						
					
					
						commit
						2631e3ea77
					
				|  | @ -1,11 +1,11 @@ | |||
| require 'jekyll-seo-tag/filters' | ||||
| require 'jekyll-seo-tag/version' | ||||
| require "jekyll-seo-tag/filters" | ||||
| require "jekyll-seo-tag/version" | ||||
| 
 | ||||
| module Jekyll | ||||
|   class SeoTag < Liquid::Tag | ||||
|     attr_accessor :context | ||||
| 
 | ||||
|     MINIFY_REGEX = /([>,]\n|[%}]})\s+?(<|{[{%]|[ ]+\")/ | ||||
|     MINIFY_REGEX = %r!([>,]\n|[%}]})\s+?(<|{[{%]|[ ]+\")! | ||||
| 
 | ||||
|     def initialize(_tag_name, text, _tokens) | ||||
|       super | ||||
|  | @ -21,28 +21,28 @@ module Jekyll | |||
| 
 | ||||
|     def options | ||||
|       { | ||||
|         'version' => Jekyll::SeoTag::VERSION, | ||||
|         'title'   => title? | ||||
|         "version" => Jekyll::SeoTag::VERSION, | ||||
|         "title"   => title? | ||||
|       } | ||||
|     end | ||||
| 
 | ||||
|     def payload | ||||
|       { | ||||
|         'page'    => context.registers[:page], | ||||
|         'site'    => context.registers[:site].site_payload['site'], | ||||
|         'paginator' => context['paginator'], | ||||
|         'seo_tag' => options | ||||
|         "page"      => context.registers[:page], | ||||
|         "site"      => context.registers[:site].site_payload["site"], | ||||
|         "paginator" => context["paginator"], | ||||
|         "seo_tag"   => options | ||||
|       } | ||||
|     end | ||||
| 
 | ||||
|     def title? | ||||
|       !(@text =~ /title=false/i) | ||||
|       !(@text =~ %r!title=false!i) | ||||
|     end | ||||
| 
 | ||||
|     def info | ||||
|       { | ||||
|         :registers => context.registers, | ||||
|         :filters => [Jekyll::Filters, JekyllSeoTag::Filters] | ||||
|         :filters   => [Jekyll::Filters, JekyllSeoTag::Filters] | ||||
|       } | ||||
|     end | ||||
| 
 | ||||
|  | @ -58,10 +58,10 @@ module Jekyll | |||
| 
 | ||||
|     def template_path | ||||
|       @template_path ||= begin | ||||
|         File.expand_path './template.html', File.dirname(__FILE__) | ||||
|         File.expand_path "./template.html", File.dirname(__FILE__) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| Liquid::Template.register_tag('seo', Jekyll::SeoTag) | ||||
| Liquid::Template.register_tag("seo", Jekyll::SeoTag) | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ module JekyllSeoTag | |||
|   module Filters | ||||
|     # This is available in Liquid from version 3 which is required by Jekyll 3 | ||||
|     # Provided here for compatibility with Jekyll 2.x | ||||
|     def default(input, default_value = ''.freeze) | ||||
|     def default(input, default_value = "".freeze) | ||||
|       if !input || input.respond_to?(:empty?) && input.empty? | ||||
|         default_value | ||||
|       else | ||||
|  |  | |||
|  | @ -3,6 +3,6 @@ module Liquid; class Tag; end; end | |||
| 
 | ||||
| module Jekyll | ||||
|   class SeoTag < Liquid::Tag | ||||
|     VERSION = '2.0.0'.freeze | ||||
|     VERSION = "2.0.0".freeze | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -1,105 +1,105 @@ | |||
| require 'spec_helper' | ||||
| require "spec_helper" | ||||
| 
 | ||||
| describe Jekyll::SeoTag do | ||||
|   let(:page)      { make_page } | ||||
|   let(:site)      { make_site } | ||||
|   let(:post)      { make_post } | ||||
|   let(:context)   { make_context(:page => page, :site => site) } | ||||
|   let(:tag)       { 'seo' } | ||||
|   let(:text)      { '' } | ||||
|   let(:tag)       { "seo" } | ||||
|   let(:text)      { "" } | ||||
|   let(:output)    { Liquid::Template.parse("{% #{tag} #{text} %}").render!(context, {}) } | ||||
|   let(:json)      { output.match(%r!<script type=\"application/ld\+json\">(.*)</script>!m)[1] } | ||||
|   let(:json_data) { JSON.parse(json) } | ||||
|   let(:paginator) { { 'previous_page' => true, 'previous_page_path' => 'foo', 'next_page' => true, 'next_page_path' => 'bar' } } | ||||
|   let(:paginator) { { "previous_page" => true, "previous_page_path" => "foo", "next_page" => true, "next_page_path" => "bar" } } | ||||
| 
 | ||||
|   before do | ||||
|     Jekyll.logger.log_level = :error | ||||
|   end | ||||
| 
 | ||||
|   it 'builds' do | ||||
|     expect(output).to match(/Jekyll SEO tag/i) | ||||
|   it "builds" do | ||||
|     expect(output).to match(%r!Jekyll SEO tag!i) | ||||
|   end | ||||
| 
 | ||||
|   it 'outputs the plugin version' do | ||||
|   it "outputs the plugin version" do | ||||
|     version = Jekyll::SeoTag::VERSION | ||||
|     expect(output).to match(/Jekyll SEO tag v#{version}/i) | ||||
|     expect(output).to match(%r!Jekyll SEO tag v#{version}!i) | ||||
|   end | ||||
| 
 | ||||
|   it 'outputs valid HTML' do | ||||
|   it "outputs valid HTML" do | ||||
|     site.process | ||||
|     options = { | ||||
|       :check_html => true, | ||||
|       :check_html       => true, | ||||
|       :checks_to_ignore => %w(ScriptCheck LinkCheck ImageCheck) | ||||
|     } | ||||
|     status = HTML::Proofer.new(dest_dir, options).run | ||||
|     expect(status).to eql(true) | ||||
|   end | ||||
| 
 | ||||
|   context 'with page.title' do | ||||
|     let(:page) { make_page('title' => 'foo') } | ||||
|   context "with page.title" do | ||||
|     let(:page) { make_page("title" => "foo") } | ||||
| 
 | ||||
|     it 'builds the title with a page title only' do | ||||
|     it "builds the title with a page title only" do | ||||
|       expect(output).to match(%r!<title>foo</title>!) | ||||
|       expected = %r!<meta property="og:title" content="foo" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
| 
 | ||||
|     context 'with site.title' do | ||||
|       let(:site) { make_site('title' => 'bar') } | ||||
|     context "with site.title" do | ||||
|       let(:site) { make_site("title" => "bar") } | ||||
| 
 | ||||
|       it 'builds the title with a page title and site title' do | ||||
|       it "builds the title with a page title and site title" do | ||||
|         expect(output).to match(%r!<title>foo - bar</title>!) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.title' do | ||||
|     let(:site) { make_site('title' => 'Site title') } | ||||
|   context "with site.title" do | ||||
|     let(:site) { make_site("title" => "Site title") } | ||||
| 
 | ||||
|     it 'builds the title with only a site title' do | ||||
|     it "builds the title with only a site title" do | ||||
|       expect(output).to match(%r!<title>Site title</title>!) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with page.description' do | ||||
|     let(:page) { make_page('description' => 'foo') } | ||||
|   context "with page.description" do | ||||
|     let(:page) { make_page("description" => "foo") } | ||||
| 
 | ||||
|     it 'uses the page description' do | ||||
|     it "uses the page description" do | ||||
|       expect(output).to match(%r!<meta name="description" content="foo" />!) | ||||
|       expect(output).to match(%r!<meta property="og:description" content="foo" />!) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with page.excerpt' do | ||||
|     let(:page) { make_page('excerpt' => 'foo') } | ||||
|   context "with page.excerpt" do | ||||
|     let(:page) { make_page("excerpt" => "foo") } | ||||
| 
 | ||||
|     it 'uses the page excerpt when no page description exists' do | ||||
|     it "uses the page excerpt when no page description exists" do | ||||
|       expect(output).to match(%r!<meta name="description" content="foo" />!) | ||||
|       expect(output).to match(%r!<meta property="og:description" content="foo" />!) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.description' do | ||||
|     let(:site) { make_site('description' => 'foo') } | ||||
|   context "with site.description" do | ||||
|     let(:site) { make_site("description" => "foo") } | ||||
| 
 | ||||
|     it 'uses the site description when no page description nor excerpt exist' do | ||||
|     it "uses the site description when no page description nor excerpt exist" do | ||||
|       expect(output).to match(%r!<meta name="description" content="foo" />!) | ||||
|       expect(output).to match(%r!<meta property="og:description" content="foo" />!) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.url' do | ||||
|     let(:site) { make_site('url' => 'http://example.invalid') } | ||||
|   context "with site.url" do | ||||
|     let(:site) { make_site("url" => "http://example.invalid") } | ||||
| 
 | ||||
|     it 'uses the site url to build the seo url' do | ||||
|     it "uses the site url to build the seo url" do | ||||
|       expected = %r!<link rel="canonical" href="http://example.invalid/page.html" />! | ||||
|       expect(output).to match(expected) | ||||
|       expected = %r!<meta property="og:url" content="http://example.invalid/page.html" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
| 
 | ||||
|     context 'with page.permalink' do | ||||
|       let(:page) { make_page('permalink' => '/page/index.html') } | ||||
|     context "with page.permalink" do | ||||
|       let(:page) { make_page("permalink" => "/page/index.html") } | ||||
| 
 | ||||
|       it "uses replaces '/index.html' with '/'" do | ||||
|         expected = %r!<link rel="canonical" href="http://example.invalid/page/" />! | ||||
|  | @ -110,10 +110,10 @@ describe Jekyll::SeoTag do | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with site.baseurl' do | ||||
|       let(:site) { make_site('url' => 'http://example.invalid', 'baseurl' => '/foo') } | ||||
|     context "with site.baseurl" do | ||||
|       let(:site) { make_site("url" => "http://example.invalid", "baseurl" => "/foo") } | ||||
| 
 | ||||
|       it 'uses baseurl to build the seo url' do | ||||
|       it "uses baseurl to build the seo url" do | ||||
|         expected = %r!<link rel="canonical" href="http://example.invalid/foo/page.html" />! | ||||
|         expect(output).to match(expected) | ||||
|         expected = %r!<meta property="og:url" content="http://example.invalid/foo/page.html" />! | ||||
|  | @ -121,57 +121,57 @@ describe Jekyll::SeoTag do | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with relative page.image as a string' do | ||||
|       let(:page) { make_page('image' => '/img/foo.png') } | ||||
|     context "with relative page.image as a string" do | ||||
|       let(:page) { make_page("image" => "/img/foo.png") } | ||||
| 
 | ||||
|       it 'outputs the image' do | ||||
|       it "outputs the image" do | ||||
|         expected = '<meta property="og:image" content="http://example.invalid/img/foo.png" />' | ||||
|         expect(output).to include(expected) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with absolute page.image' do | ||||
|       let(:page) { make_page('image' => 'http://cdn.example.invalid/img/foo.png') } | ||||
|     context "with absolute page.image" do | ||||
|       let(:page) { make_page("image" => "http://cdn.example.invalid/img/foo.png") } | ||||
| 
 | ||||
|       it 'outputs the image' do | ||||
|       it "outputs the image" do | ||||
|         expected = '<meta property="og:image" content="http://cdn.example.invalid/img/foo.png" />' | ||||
|         expect(output).to include(expected) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with page.image as an object' do | ||||
|       context 'when given a path' do | ||||
|         let(:page) { make_page('image' => { 'path' => '/img/foo.png' }) } | ||||
|     context "with page.image as an object" do | ||||
|       context "when given a path" do | ||||
|         let(:page) { make_page("image" => { "path" => "/img/foo.png" }) } | ||||
| 
 | ||||
|         it 'outputs the image' do | ||||
|         it "outputs the image" do | ||||
|           expected = %r!<meta property="og:image" content="http://example.invalid/img/foo.png" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when given a facebook image' do | ||||
|         let(:page) { make_page('image' => { 'facebook' => '/img/facebook.png' }) } | ||||
|       context "when given a facebook image" do | ||||
|         let(:page) { make_page("image" => { "facebook" => "/img/facebook.png" }) } | ||||
| 
 | ||||
|         it 'outputs the image' do | ||||
|         it "outputs the image" do | ||||
|           expected = %r!<meta property="og:image" content="http://example.invalid/img/facebook.png" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when given a twitter image' do | ||||
|         let(:page) { make_page('image' => { 'twitter' => '/img/twitter.png' }) } | ||||
|       context "when given a twitter image" do | ||||
|         let(:page) { make_page("image" => { "twitter" => "/img/twitter.png" }) } | ||||
| 
 | ||||
|         it 'outputs the image' do | ||||
|         it "outputs the image" do | ||||
|           expected = %r!<meta name="twitter:image" content="http://example.invalid/img/twitter.png" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when given the image height and width' do | ||||
|         let(:image) { { 'facebook' => '/img/foo.png', 'height' => 1, 'width' => 2 } } | ||||
|         let(:page) { make_page('image' => image) } | ||||
|       context "when given the image height and width" do | ||||
|         let(:image) { { "facebook" => "/img/foo.png", "height" => 1, "width" => 2 } } | ||||
|         let(:page) { make_page("image" => image) } | ||||
| 
 | ||||
|         it 'outputs the image' do | ||||
|         it "outputs the image" do | ||||
|           expected = %r!<meta property="og:image:height" content="1" />! | ||||
|           expect(output).to match(expected) | ||||
|           expected = %r!<meta property="og:image:width" content="2" />! | ||||
|  | @ -180,30 +180,30 @@ describe Jekyll::SeoTag do | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with site.logo' do | ||||
|       let(:site) { make_site('logo' => '/logo.png', 'url' => 'http://example.invalid') } | ||||
|     context "with site.logo" do | ||||
|       let(:site) { make_site("logo" => "/logo.png", "url" => "http://example.invalid") } | ||||
| 
 | ||||
|       it 'outputs the logo' do | ||||
|         expect(json_data['logo']).to eql('http://example.invalid/logo.png') | ||||
|       it "outputs the logo" do | ||||
|         expect(json_data["logo"]).to eql("http://example.invalid/logo.png") | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with absolute site.logo' do | ||||
|       let(:site) { make_site('logo' => 'http://cdn.example.invalid/logo.png', 'url' => 'http://example.invalid') } | ||||
|     context "with absolute site.logo" do | ||||
|       let(:site) { make_site("logo" => "http://cdn.example.invalid/logo.png", "url" => "http://example.invalid") } | ||||
| 
 | ||||
|       it 'outputs the logo' do | ||||
|         expect(json_data['logo']).to eql('http://cdn.example.invalid/logo.png') | ||||
|       it "outputs the logo" do | ||||
|         expect(json_data["logo"]).to eql("http://cdn.example.invalid/logo.png") | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with site.title' do | ||||
|       let(:site) { make_site('title' => 'Foo', 'url' => 'http://example.invalid') } | ||||
|     context "with site.title" do | ||||
|       let(:site) { make_site("title" => "Foo", "url" => "http://example.invalid") } | ||||
| 
 | ||||
|       it 'outputs the site title meta' do | ||||
|       it "outputs the site title meta" do | ||||
|         expect(output).to match(%r!<meta property="og:site_name" content="Foo" />!) | ||||
|       end | ||||
| 
 | ||||
|       it 'minifies the output' do | ||||
|       it "minifies the output" do | ||||
|         version = Jekyll::SeoTag::VERSION | ||||
|         expected = <<-EOS | ||||
| <!-- Begin Jekyll SEO tag v#{version} --> | ||||
|  | @ -218,11 +218,11 @@ EOS | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.github.url' do | ||||
|     let(:github_namespace) { { 'url' => 'http://example.invalid' } } | ||||
|     let(:site) { make_site('github' => github_namespace) } | ||||
|   context "with site.github.url" do | ||||
|     let(:github_namespace) { { "url" => "http://example.invalid" } } | ||||
|     let(:site) { make_site("github" => github_namespace) } | ||||
| 
 | ||||
|     it 'uses site.github.url to build the seo url' do | ||||
|     it "uses site.github.url to build the seo url" do | ||||
|       expected = %r!<link rel="canonical" href="http://example.invalid/page.html" \/>! | ||||
|       expect(output).to match(expected) | ||||
|       expected = %r!<meta property="og:url" content="http://example.invalid/page.html" />! | ||||
|  | @ -230,28 +230,28 @@ EOS | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'posts' do | ||||
|     context 'with post meta' do | ||||
|       let(:site) { make_site('url' => 'http://example.invalid') } | ||||
|   context "posts" do | ||||
|     context "with post meta" do | ||||
|       let(:site) { make_site("url" => "http://example.invalid") } | ||||
|       let(:meta) do | ||||
|         { | ||||
|           'title'       => 'post', | ||||
|           'description' => 'description', | ||||
|           'image'       => '/img.png' | ||||
|           "title"       => "post", | ||||
|           "description" => "description", | ||||
|           "image"       => "/img.png" | ||||
|         } | ||||
|       end | ||||
|       let(:page) { make_post(meta) } | ||||
| 
 | ||||
|       it 'outputs post meta' do | ||||
|       it "outputs post meta" do | ||||
|         expected = %r!<meta property="og:type" content="article" />! | ||||
|         expect(output).to match(expected) | ||||
| 
 | ||||
|         expect(json_data['headline']).to eql('post') | ||||
|         expect(json_data['description']).to eql('description') | ||||
|         expect(json_data['image']).to eql('http://example.invalid/img.png') | ||||
|         expect(json_data["headline"]).to eql("post") | ||||
|         expect(json_data["description"]).to eql("description") | ||||
|         expect(json_data["image"]).to eql("http://example.invalid/img.png") | ||||
|       end | ||||
| 
 | ||||
|       it 'minifies JSON-LD' do | ||||
|       it "minifies JSON-LD" do | ||||
|         expected = <<-EOS | ||||
|   { | ||||
|     "@context": "http://schema.org", | ||||
|  | @ -263,42 +263,42 @@ EOS | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'facebook' do | ||||
|   context "facebook" do | ||||
|     let(:site_facebook) do | ||||
|       { | ||||
|         'admins' => 'jekyllrb-fb-admins', | ||||
|         'app_id' => 'jekyllrb-fb-app_id', | ||||
|         'publisher' => 'jekyllrb-fb-publisher' | ||||
|         "admins"    => "jekyllrb-fb-admins", | ||||
|         "app_id"    => "jekyllrb-fb-app_id", | ||||
|         "publisher" => "jekyllrb-fb-publisher" | ||||
|       } | ||||
|     end | ||||
| 
 | ||||
|     let(:site) { make_site('facebook' => site_facebook) } | ||||
|     let(:site) { make_site("facebook" => site_facebook) } | ||||
| 
 | ||||
|     it 'outputs facebook admins meta' do | ||||
|     it "outputs facebook admins meta" do | ||||
|       expected = %r!<meta property="fb:admins" content="jekyllrb-fb-admins" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
| 
 | ||||
|     it 'outputs facebook app ID meta' do | ||||
|     it "outputs facebook app ID meta" do | ||||
|       expected = %r!<meta property="fb:app_id" content="jekyllrb-fb-app_id" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
| 
 | ||||
|     it 'outputs facebook article publisher meta' do | ||||
|     it "outputs facebook article publisher meta" do | ||||
|       expected = %r!<meta property="article:publisher" content="jekyllrb-fb-publisher" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'twitter' do | ||||
|     context 'with site.twitter.username' do | ||||
|       let(:site_twitter) { { 'username' => 'jekyllrb' } } | ||||
|       let(:site) { make_site('twitter' => site_twitter) } | ||||
|   context "twitter" do | ||||
|     context "with site.twitter.username" do | ||||
|       let(:site_twitter) { { "username" => "jekyllrb" } } | ||||
|       let(:site) { make_site("twitter" => site_twitter) } | ||||
| 
 | ||||
|       context 'with page.author as a string' do | ||||
|         let(:page) { make_page('author' => 'benbalter') } | ||||
|       context "with page.author as a string" do | ||||
|         let(:page) { make_page("author" => "benbalter") } | ||||
| 
 | ||||
|         it 'outputs twitter card meta' do | ||||
|         it "outputs twitter card meta" do | ||||
|           expected = %r!<meta name="twitter:card" content="summary" />! | ||||
|           expect(output).to match(expected) | ||||
| 
 | ||||
|  | @ -309,30 +309,30 @@ EOS | |||
|           expect(output).to match(expected) | ||||
|         end | ||||
| 
 | ||||
|         context 'with an @' do | ||||
|           let(:page) { make_page('author' => '@benbalter') } | ||||
|         context "with an @" do | ||||
|           let(:page) { make_page("author" => "@benbalter") } | ||||
| 
 | ||||
|           it 'outputs the twitter card' do | ||||
|           it "outputs the twitter card" do | ||||
|             expected = %r!<meta name="twitter:creator" content="@benbalter" />! | ||||
|             expect(output).to match(expected) | ||||
|           end | ||||
|         end | ||||
| 
 | ||||
|         context 'with site.data.authors' do | ||||
|         context "with site.data.authors" do | ||||
|           let(:author_data) { {} } | ||||
|           let(:data) { { 'authors' => author_data } } | ||||
|           let(:site) { make_site('data' => data, 'twitter' => site_twitter) } | ||||
|           let(:data) { { "authors" => author_data } } | ||||
|           let(:site) { make_site("data" => data, "twitter" => site_twitter) } | ||||
| 
 | ||||
|           context 'with the author in site.data.authors' do | ||||
|             let(:author_data) { { 'benbalter' => { 'twitter' => 'test' } } } | ||||
|             it 'outputs the twitter card' do | ||||
|           context "with the author in site.data.authors" do | ||||
|             let(:author_data) { { "benbalter" => { "twitter" => "test" } } } | ||||
|             it "outputs the twitter card" do | ||||
|               expected = %r!<meta name="twitter:creator" content="@test" />! | ||||
|               expect(output).to match(expected) | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           context 'without the author in site.data.authors' do | ||||
|             it 'outputs the twitter card' do | ||||
|           context "without the author in site.data.authors" do | ||||
|             it "outputs the twitter card" do | ||||
|               expected = %r!<meta name="twitter:creator" content="@benbalter" />! | ||||
|               expect(output).to match(expected) | ||||
|             end | ||||
|  | @ -340,38 +340,38 @@ EOS | |||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'with page.image' do | ||||
|         let(:page) { make_page('image' => '/img/foo.png') } | ||||
|       context "with page.image" do | ||||
|         let(:page) { make_page("image" => "/img/foo.png") } | ||||
| 
 | ||||
|         it 'outputs summary card with large image' do | ||||
|         it "outputs summary card with large image" do | ||||
|           expected = %r!<meta name="twitter:card" content="summary_large_image" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'with page.author as a hash' do | ||||
|         let(:page) { make_page('author' => { 'twitter' => '@test' }) } | ||||
|       context "with page.author as a hash" do | ||||
|         let(:page) { make_page("author" => { "twitter" => "@test" }) } | ||||
| 
 | ||||
|         it 'supports author data as a hash' do | ||||
|         it "supports author data as a hash" do | ||||
|           expected = %r!<meta name="twitter:creator" content="@test" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'with page.authors as an array' do | ||||
|         let(:page) { make_page('authors' => %w(test foo)) } | ||||
|       context "with page.authors as an array" do | ||||
|         let(:page) { make_page("authors" => %w(test foo)) } | ||||
| 
 | ||||
|         it 'supports author data as an array' do | ||||
|         it "supports author data as an array" do | ||||
|           expected = %r!<meta name="twitter:creator" content="@test" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'with site.author as a hash' do | ||||
|         let(:author) { { 'twitter' => '@test' } } | ||||
|         let(:site) { make_site('author' => author, 'twitter' => site_twitter) } | ||||
|       context "with site.author as a hash" do | ||||
|         let(:author) { { "twitter" => "@test" } } | ||||
|         let(:site) { make_site("author" => author, "twitter" => site_twitter) } | ||||
| 
 | ||||
|         it 'supports author data as an hash' do | ||||
|         it "supports author data as an hash" do | ||||
|           expected = %r!<meta name="twitter:creator" content="@test" />! | ||||
|           expect(output).to match(expected) | ||||
|         end | ||||
|  | @ -379,78 +379,78 @@ EOS | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.social' do | ||||
|     let(:links) { ['http://foo.invalid', 'http://bar.invalid'] } | ||||
|     let(:social_namespace) { { 'name' => 'Ben', 'links' => links } } | ||||
|     let(:site) { make_site('social' => social_namespace) } | ||||
|   context "with site.social" do | ||||
|     let(:links) { ["http://foo.invalid", "http://bar.invalid"] } | ||||
|     let(:social_namespace) { { "name" => "Ben", "links" => links } } | ||||
|     let(:site) { make_site("social" => social_namespace) } | ||||
|     let(:page) { make_post(meta) } | ||||
| 
 | ||||
|     context 'on homepage' do | ||||
|     context "on homepage" do | ||||
|       let(:meta) do | ||||
|         { | ||||
|           'permalink'   => '/', | ||||
|           'seo'         => { | ||||
|             'type' => 'person' | ||||
|           "permalink" => "/", | ||||
|           "seo"       => { | ||||
|             "type" => "person" | ||||
|           } | ||||
|         } | ||||
|       end | ||||
| 
 | ||||
|       it 'outputs social meta' do | ||||
|         expect(json_data['@type']).to eql('person') | ||||
|         expect(json_data['name']).to eql('Ben') | ||||
|         expect(json_data['sameAs']).to eql(links) | ||||
|       it "outputs social meta" do | ||||
|         expect(json_data["@type"]).to eql("person") | ||||
|         expect(json_data["name"]).to eql("Ben") | ||||
|         expect(json_data["sameAs"]).to eql(links) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'on about page' do | ||||
|       let(:meta) { { 'permalink' => '/about/' } } | ||||
|     context "on about page" do | ||||
|       let(:meta) { { "permalink" => "/about/" } } | ||||
| 
 | ||||
|       it 'outputs sameAs links' do | ||||
|         expect(json_data['sameAs']).to eql(links) | ||||
|       it "outputs sameAs links" do | ||||
|         expect(json_data["sameAs"]).to eql(links) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'on other pages' do | ||||
|       let(:meta) { { 'permalink' => '/2/' } } | ||||
|     context "on other pages" do | ||||
|       let(:meta) { { "permalink" => "/2/" } } | ||||
| 
 | ||||
|       it 'does not output sameAs links' do | ||||
|         expect(json_data['sameAs']).to be_nil | ||||
|       it "does not output sameAs links" do | ||||
|         expect(json_data["sameAs"]).to be_nil | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with site.name' do | ||||
|     let(:site) { make_site('name' => 'Site name') } | ||||
|   context "with site.name" do | ||||
|     let(:site) { make_site("name" => "Site name") } | ||||
| 
 | ||||
|     it 'uses site.name if site.title is not present' do | ||||
|     it "uses site.name if site.title is not present" do | ||||
|       expected = %r!<meta property="og:site_name" content="Site name" />! | ||||
|       expect(output).to match(expected) | ||||
|     end | ||||
| 
 | ||||
|     context 'with site.title' do | ||||
|       let(:site)  { make_site('name' => 'Site Name', 'title' => 'Site Title') } | ||||
|     context "with site.title" do | ||||
|       let(:site)  { make_site("name" => "Site Name", "title" => "Site Title") } | ||||
| 
 | ||||
|       it 'uses site.tile if both site.title and site.name are present' do | ||||
|       it "uses site.tile if both site.title and site.name are present" do | ||||
|         expected = %r!<meta property="og:site_name" content="Site Title" />! | ||||
|         expect(output).to match(expected) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with title=false' do | ||||
|     let(:text) { 'title=false' } | ||||
|   context "with title=false" do | ||||
|     let(:text) { "title=false" } | ||||
| 
 | ||||
|     it 'does not output a <title> tag' do | ||||
|       expect(output).not_to match(/<title>/) | ||||
|     it "does not output a <title> tag" do | ||||
|       expect(output).not_to match(%r!<title>!) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'with pagination' do | ||||
|     let(:context) { make_context({}, 'paginator' => paginator) } | ||||
|   context "with pagination" do | ||||
|     let(:context) { make_context({}, "paginator" => paginator) } | ||||
| 
 | ||||
|     it 'outputs pagination links' do | ||||
|       expect(output).to match(/<link rel="prev" href="foo">/) | ||||
|       expect(output).to match(/<link rel="next" href="bar">/) | ||||
|     it "outputs pagination links" do | ||||
|       expect(output).to match(%r!<link rel="prev" href="foo">!) | ||||
|       expect(output).to match(%r!<link rel="next" href="bar">!) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -1,33 +1,33 @@ | |||
| $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) | ||||
| require 'jekyll' | ||||
| require 'jekyll-seo-tag' | ||||
| require 'html/proofer' | ||||
| $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) | ||||
| require "jekyll" | ||||
| require "jekyll-seo-tag" | ||||
| require "html/proofer" | ||||
| 
 | ||||
| ENV['JEKYLL_LOG_LEVEL'] = 'error' | ||||
| ENV["JEKYLL_LOG_LEVEL"] = "error" | ||||
| 
 | ||||
| def dest_dir | ||||
|   File.expand_path('../tmp/dest', File.dirname(__FILE__)) | ||||
|   File.expand_path("../tmp/dest", File.dirname(__FILE__)) | ||||
| end | ||||
| 
 | ||||
| def source_dir | ||||
|   File.expand_path('./fixtures', File.dirname(__FILE__)) | ||||
|   File.expand_path("./fixtures", File.dirname(__FILE__)) | ||||
| end | ||||
| 
 | ||||
| CONFIG_DEFAULTS = { | ||||
|   'source'      => source_dir, | ||||
|   'destination' => dest_dir, | ||||
|   'gems'        => ['jekyll-seo-tag'] | ||||
|   "source"      => source_dir, | ||||
|   "destination" => dest_dir, | ||||
|   "gems"        => ["jekyll-seo-tag"] | ||||
| }.freeze | ||||
| 
 | ||||
| def make_page(options = {}) | ||||
|   page = Jekyll::Page.new site, CONFIG_DEFAULTS['source'], '', 'page.md' | ||||
|   page = Jekyll::Page.new site, CONFIG_DEFAULTS["source"], "", "page.md" | ||||
|   page.data = options | ||||
|   page | ||||
| end | ||||
| 
 | ||||
| def make_post(options = {}) | ||||
|   filename = File.expand_path('2015-01-01-post.md', CONFIG_DEFAULTS['source']) | ||||
|   config = { :site => site, :collection => site.collections['posts'] } | ||||
|   filename = File.expand_path("2015-01-01-post.md", CONFIG_DEFAULTS["source"]) | ||||
|   config = { :site => site, :collection => site.collections["posts"] } | ||||
|   page = Jekyll::Document.new filename, config | ||||
|   page.merge_data!(options) | ||||
|   page | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue