meta-tags 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.gitignore +1 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -1
- data/.travis.yml +7 -13
- data/CHANGELOG.md +18 -0
- data/Gemfile +5 -0
- data/README.md +163 -71
- data/Rakefile +2 -2
- data/lib/meta_tags.rb +18 -0
- data/lib/meta_tags/configuration.rb +21 -0
- data/lib/meta_tags/meta_tags_collection.rb +5 -10
- data/lib/meta_tags/renderer.rb +114 -37
- data/lib/meta_tags/text_normalizer.rb +71 -6
- data/lib/meta_tags/version.rb +1 -1
- data/lib/meta_tags/view_helper.rb +12 -11
- data/meta-tags.gemspec +2 -1
- data/spec/configuration_spec.rb +14 -0
- data/spec/controller_helper_spec.rb +4 -4
- data/spec/spec_helper.rb +69 -13
- data/spec/text_normalizer/normalize_title_spec.rb +43 -0
- data/spec/text_normalizer/truncate_array_spec.rb +60 -0
- data/spec/view_helper/charset_spec.rb +16 -0
- data/spec/view_helper/custom_spec.rb +67 -0
- data/spec/view_helper/description_spec.rb +61 -0
- data/spec/view_helper/icon_spec.rb +42 -0
- data/spec/view_helper/keywords_spec.rb +58 -0
- data/spec/view_helper/links_spec.rb +125 -0
- data/spec/view_helper/module_spec.rb +41 -0
- data/spec/view_helper/noindex_spec.rb +107 -0
- data/spec/view_helper/open_graph_spec.rb +86 -0
- data/spec/view_helper/open_search_spec.rb +33 -0
- data/spec/view_helper/refresh_spec.rb +32 -0
- data/spec/view_helper/title_spec.rb +155 -0
- data/spec/view_helper/twitter_spec.rb +31 -0
- data/spec/view_helper_spec.rb +57 -0
- metadata +53 -21
- data/spec/meta_tags_spec.rb +0 -570
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
it 'should not display icon by default' do
|
7
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
8
|
+
expect(meta).to_not have_tag('link', with: { rel: 'icon' })
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should display icon when "set_meta_tags" used' do
|
13
|
+
subject.set_meta_tags(icon: '/favicon.ico')
|
14
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
15
|
+
expect(meta).to have_tag('link', with: { href: '/favicon.ico', rel: 'icon', type: 'image/x-icon' })
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should display default canonical url' do
|
20
|
+
subject.display_meta_tags(site: 'someSite', icon: '/favicon.ico').tap do |meta|
|
21
|
+
expect(meta).to have_tag('link', with: { href: '/favicon.ico', rel: 'icon', type: 'image/x-icon' })
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should allow to specify hash as an icon' do
|
26
|
+
subject.set_meta_tags(icon: { href: '/favicon.png', type: 'image/png' })
|
27
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
28
|
+
expect(meta).to have_tag('link', with: { href: '/favicon.png', rel: 'icon', type: 'image/png' })
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should allow to specify multiple icons' do
|
33
|
+
subject.set_meta_tags(icon: [
|
34
|
+
{ href: '/images/icons/icon_96.png', sizes: '32x32 96x96', type: 'image/png' },
|
35
|
+
{ href: '/images/icons/icon_itouch_precomp_32.png', rel: 'apple-touch-icon-precomposed', sizes: '32x32', type: 'image/png' },
|
36
|
+
])
|
37
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
38
|
+
expect(meta).to have_tag('link', with: { href: '/images/icons/icon_96.png', rel: 'icon', type: 'image/png', sizes: '32x32 96x96' })
|
39
|
+
expect(meta).to have_tag('link', with: { href: '/images/icons/icon_itouch_precomp_32.png', rel: 'apple-touch-icon-precomposed', type: 'image/png', sizes: '32x32' })
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper, 'displaying keywords' do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
it 'should not display keywords if blank' do
|
7
|
+
subject.keywords('')
|
8
|
+
expect(subject.display_meta_tags).to eq('')
|
9
|
+
|
10
|
+
subject.keywords([])
|
11
|
+
expect(subject.display_meta_tags).to eq('')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should display keywords when "keywords" used' do
|
15
|
+
subject.keywords('some-keywords')
|
16
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
17
|
+
expect(meta).to have_tag('meta', with: { content: "some-keywords", name: "keywords" })
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should display keywords when "set_meta_tags" used' do
|
22
|
+
subject.set_meta_tags(keywords: 'some-keywords')
|
23
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
24
|
+
expect(meta).to have_tag('meta', with: { content: "some-keywords", name: "keywords" })
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should display default keywords' do
|
29
|
+
subject.display_meta_tags(site: 'someSite', keywords: 'some-keywords').tap do |meta|
|
30
|
+
expect(meta).to have_tag('meta', with: { content: "some-keywords", name: "keywords" })
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should use custom keywords if given' do
|
35
|
+
subject.keywords('some-keywords')
|
36
|
+
subject.display_meta_tags(site: 'someSite', keywords: 'default_keywords').tap do |meta|
|
37
|
+
expect(meta).to have_tag('meta', with: { content: "some-keywords", name: "keywords" })
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should lowercase keywords' do
|
42
|
+
subject.display_meta_tags(site: 'someSite', keywords: 'someKeywords').tap do |meta|
|
43
|
+
expect(meta).to have_tag('meta', with: { content: "somekeywords", name: "keywords" })
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should join keywords from Array' do
|
48
|
+
subject.display_meta_tags(site: 'someSite', keywords: %w(keyword1 keyword2)).tap do |meta|
|
49
|
+
expect(meta).to have_tag('meta', with: { content: "keyword1, keyword2", name: "keywords" })
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should join keywords from nested Arrays' do
|
54
|
+
subject.display_meta_tags(site: 'someSite', keywords: [%w(keyword1 keyword2), 'keyword3']).tap do |meta|
|
55
|
+
expect(meta).to have_tag('meta', with: { content: "keyword1, keyword2, keyword3", name: "keywords" })
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
context 'displaying canonical url' do
|
7
|
+
it 'should not display canonical url by default' do
|
8
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
9
|
+
expect(meta).to_not have_tag('link', with: { href: "http://example.com/base/url", rel: "canonical" })
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should display canonical url when "set_meta_tags" used' do
|
14
|
+
subject.set_meta_tags(canonical: 'http://example.com/base/url')
|
15
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
16
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "canonical" })
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should display default canonical url' do
|
21
|
+
subject.display_meta_tags(site: 'someSite', canonical: 'http://example.com/base/url').tap do |meta|
|
22
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "canonical" })
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'displaying alternate url' do
|
28
|
+
it 'should not display alternate url by default' do
|
29
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
30
|
+
expect(meta).to_not have_tag('link', with: { href: "http://example.fr/base/url", hreflang: "fr", rel: "alternate" })
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should display alternate url when "set_meta_tags" used' do
|
35
|
+
subject.set_meta_tags(alternate: { 'fr' => 'http://example.fr/base/url' })
|
36
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
37
|
+
expect(meta).to have_tag('link', with: { href: "http://example.fr/base/url", hreflang: "fr", rel: "alternate" })
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should display default alternate url' do
|
42
|
+
subject.display_meta_tags(site: 'someSite', alternate: { 'fr' => 'http://example.fr/base/url' }).tap do |meta|
|
43
|
+
expect(meta).to have_tag('link', with: { href: "http://example.fr/base/url", hreflang: "fr", rel: "alternate" })
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should not display alternate without content" do
|
48
|
+
subject.display_meta_tags(site: 'someSite', alternate: {'zh-Hant' => ''}).tap do |meta|
|
49
|
+
expect(meta).to_not have_tag('link', with: { href: "", hreflang: "zh-Hant", rel: "alternate" })
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should allow to specify an array of alternate links' do
|
54
|
+
subject.display_meta_tags(site: 'someSite', alternate: [
|
55
|
+
{ href: 'http://example.fr/base/url', hreflang: 'fr' },
|
56
|
+
{ href: 'http://example.com/feed.rss', type: 'application/rss+xml', title: 'RSS' },
|
57
|
+
{ href: 'http://m.example.com/page-1', media: 'only screen and (max-width: 640px)'},
|
58
|
+
]).tap do |meta|
|
59
|
+
expect(meta).to have_tag('link', with: { href: "http://example.fr/base/url", hreflang: "fr", rel: "alternate" })
|
60
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/feed.rss", type: "application/rss+xml", title: 'RSS', rel: "alternate" })
|
61
|
+
expect(meta).to have_tag('link', with: { href: "http://m.example.com/page-1", media: 'only screen and (max-width: 640px)', rel: "alternate" })
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'displaying author link' do
|
67
|
+
it 'should display author link when "set_meta_tags" used' do
|
68
|
+
subject.set_meta_tags(author: 'http://plus.google.com/profile/url')
|
69
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
70
|
+
expect(meta).to have_tag('link', with: { href: "http://plus.google.com/profile/url", rel: "author" })
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'displaying publisher link' do
|
76
|
+
it 'should display publisher link when "set_meta_tags" used' do
|
77
|
+
subject.set_meta_tags(publisher: 'http://plus.google.com/myprofile_url')
|
78
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
79
|
+
expect(meta).to have_tag('link', with: { href: "http://plus.google.com/myprofile_url", rel: "publisher" })
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'displaying prev url' do
|
85
|
+
it 'should not display prev url by default' do
|
86
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
87
|
+
expect(meta).to_not have_tag('link', with: { href: "http://example.com/base/url", rel: "prev" })
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should display prev url when "set_meta_tags" used' do
|
92
|
+
subject.set_meta_tags(prev: 'http://example.com/base/url')
|
93
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
94
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "prev" })
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should display default prev url' do
|
99
|
+
subject.display_meta_tags(site: 'someSite', prev: 'http://example.com/base/url').tap do |meta|
|
100
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "prev" })
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'displaying next url' do
|
106
|
+
it 'should not display next url by default' do
|
107
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
108
|
+
expect(meta).to_not have_tag('link', with: { href: "http://example.com/base/url", rel: "next" })
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'should display next url when "set_meta_tags" used' do
|
113
|
+
subject.set_meta_tags(next: 'http://example.com/base/url')
|
114
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
115
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "next" })
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should display default next url' do
|
120
|
+
subject.display_meta_tags(site: 'someSite', next: 'http://example.com/base/url').tap do |meta|
|
121
|
+
expect(meta).to have_tag('link', with: { href: "http://example.com/base/url", rel: "next" })
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper, 'module' do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
it 'should be mixed into ActionView::Base' do
|
7
|
+
expect(ActionView::Base.included_modules).to include(MetaTags::ViewHelper)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should respond to "title" helper' do
|
11
|
+
expect(subject).to respond_to(:title)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should respond to "description" helper' do
|
15
|
+
expect(subject).to respond_to(:description)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should respond to "keywords" helper' do
|
19
|
+
expect(subject).to respond_to(:keywords)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should respond to "noindex" helper' do
|
23
|
+
expect(subject).to respond_to(:noindex)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should respond to "nofollow" helper' do
|
27
|
+
expect(subject).to respond_to(:nofollow)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should respond to "set_meta_tags" helper' do
|
31
|
+
expect(subject).to respond_to(:set_meta_tags)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should respond to "display_meta_tags" helper' do
|
35
|
+
expect(subject).to respond_to(:display_meta_tags)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should respond to "display_title" helper' do
|
39
|
+
expect(subject).to respond_to(:display_title)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
context 'displaying noindex' do
|
7
|
+
it 'should display noindex when "noindex" used' do
|
8
|
+
subject.noindex(true)
|
9
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
10
|
+
expect(meta).to have_tag('meta', with: { content: "noindex", name: "robots" })
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should display noindex when "set_meta_tags" used' do
|
15
|
+
subject.set_meta_tags(noindex: true)
|
16
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
17
|
+
expect(meta).to have_tag('meta', with: { content: "noindex", name: "robots" })
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should use custom noindex if given' do
|
22
|
+
subject.noindex('some-noindex')
|
23
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
24
|
+
expect(meta).to have_tag('meta', with: { content: "noindex", name: "some-noindex" })
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should display nothing by default' do
|
29
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
30
|
+
expect(meta).to_not have_tag('meta', with: { content: "noindex" })
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should display nothing if given false" do
|
35
|
+
subject.set_meta_tags(noindex: false)
|
36
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
37
|
+
expect(meta).to_not have_tag('meta', with: { content: "robots" })
|
38
|
+
end
|
39
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
40
|
+
expect(meta).to_not have_tag('meta', with: { content: "noindex" })
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'displaying nofollow' do
|
46
|
+
it 'should display nofollow when "nofollow" used' do
|
47
|
+
subject.nofollow(true)
|
48
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
49
|
+
expect(meta).to have_tag('meta', with: { content: "nofollow", name: "robots" })
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should display nofollow when "set_meta_tags" used' do
|
54
|
+
subject.set_meta_tags(nofollow: true)
|
55
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
56
|
+
expect(meta).to have_tag('meta', with: { content: "nofollow", name: "robots" })
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should use custom nofollow if given' do
|
61
|
+
subject.nofollow('some-nofollow')
|
62
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
63
|
+
expect(meta).to have_tag('meta', with: { content: "nofollow", name: "some-nofollow" })
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should display nothing by default' do
|
68
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
69
|
+
expect(meta).to_not have_tag('meta', with: { content: "nofollow" })
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'displaying both nofollow and noindex' do
|
75
|
+
it 'should be displayed when set using helpers' do
|
76
|
+
subject.noindex(true)
|
77
|
+
subject.nofollow(true)
|
78
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
79
|
+
expect(meta).to have_tag('meta', with: { content: "noindex, nofollow", name: "robots" })
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should be displayed when "set_meta_tags" used' do
|
84
|
+
subject.set_meta_tags(nofollow: true, noindex: true)
|
85
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
86
|
+
expect(meta).to have_tag('meta', with: { content: "noindex, nofollow", name: "robots" })
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should use custom name if string is used' do
|
91
|
+
subject.noindex('some-name')
|
92
|
+
subject.nofollow('some-name')
|
93
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
94
|
+
expect(meta).to have_tag('meta', with: { content: "noindex, nofollow", name: "some-name" })
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should display two meta tags when different names used' do
|
99
|
+
subject.noindex('some-noindex')
|
100
|
+
subject.nofollow('some-nofollow')
|
101
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
102
|
+
expect(meta).to have_tag('meta', with: { content: "noindex", name: "some-noindex" })
|
103
|
+
expect(meta).to have_tag('meta', with: { content: "nofollow", name: "some-nofollow" })
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaTags::ViewHelper, 'displaying Open Graph meta tags' do
|
4
|
+
subject { ActionView::Base.new }
|
5
|
+
|
6
|
+
it 'should display meta tags specified with :open_graph' do
|
7
|
+
subject.set_meta_tags(open_graph: {
|
8
|
+
title: 'Facebook Share Title',
|
9
|
+
description: 'Facebook Share Description'
|
10
|
+
})
|
11
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
12
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Title", property: "og:title" })
|
13
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Description", property: "og:description" })
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should display meta tags specified with :og' do
|
18
|
+
subject.set_meta_tags(og: {
|
19
|
+
title: 'Facebook Share Title',
|
20
|
+
description: 'Facebook Share Description'
|
21
|
+
})
|
22
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
23
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Title", property: "og:title" })
|
24
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Description", property: "og:description" })
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should use deep merge when displaying open graph meta tags' do
|
29
|
+
subject.set_meta_tags(og: { title: 'Facebook Share Title' })
|
30
|
+
subject.display_meta_tags(og: { description: 'Facebook Share Description' }).tap do |meta|
|
31
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Title", property: "og:title" })
|
32
|
+
expect(meta).to have_tag('meta', with: { content: "Facebook Share Description", property: "og:description" })
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should not display meta tags without content" do
|
37
|
+
subject.set_meta_tags(open_graph: {
|
38
|
+
title: '',
|
39
|
+
description: ''
|
40
|
+
})
|
41
|
+
subject.display_meta_tags(site: 'someSite').tap do |meta|
|
42
|
+
expect(meta).to_not have_tag('meta', with: { content: "", property: "og:title" })
|
43
|
+
expect(meta).to_not have_tag('meta', with: { content: "", property: "og:description" })
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should display locale meta tags" do
|
48
|
+
subject.display_meta_tags(open_graph: { locale: { _: 'en_GB', alternate: ['fr_FR', 'es_ES'] } }).tap do |meta|
|
49
|
+
expect(meta).to have_tag('meta', with: { content: "en_GB", property: "og:locale" })
|
50
|
+
expect(meta).to have_tag('meta', with: { content: "fr_FR", property: "og:locale:alternate" })
|
51
|
+
expect(meta).to have_tag('meta', with: { content: "es_ES", property: "og:locale:alternate" })
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should display mirrored content" do
|
56
|
+
subject.set_meta_tags(title: 'someTitle')
|
57
|
+
subject.display_meta_tags(open_graph: { title: :title }).tap do |meta|
|
58
|
+
expect(meta).to have_tag('meta', with: { content: "someTitle", property: "og:title" })
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should display open graph meta tags with an array of images" do
|
63
|
+
subject.set_meta_tags(open_graph: {
|
64
|
+
title: 'someTitle',
|
65
|
+
image: [{
|
66
|
+
_: 'http://example.com/1.png',
|
67
|
+
width: 75,
|
68
|
+
height: 75,
|
69
|
+
},
|
70
|
+
{
|
71
|
+
_: 'http://example.com/2.png',
|
72
|
+
width: 50,
|
73
|
+
height: 50,
|
74
|
+
}]
|
75
|
+
})
|
76
|
+
subject.display_meta_tags(site: 'someTitle').tap do |meta|
|
77
|
+
expect(meta).to have_tag('meta', with: { content: "someTitle", property: "og:title" })
|
78
|
+
expect(meta).to have_tag('meta', with: { content: "http://example.com/1.png", property: "og:image" })
|
79
|
+
expect(meta).to have_tag('meta', with: { content: "75", property: "og:image:width" })
|
80
|
+
expect(meta).to have_tag('meta', with: { content: "75", property: "og:image:height" })
|
81
|
+
expect(meta).to have_tag('meta', with: { content: "http://example.com/2.png", property: "og:image" })
|
82
|
+
expect(meta).to have_tag('meta', with: { content: "50", property: "og:image:width" })
|
83
|
+
expect(meta).to have_tag('meta', with: { content: "50", property: "og:image:height" })
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|