metanol 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +27 -18
- data/.overcommit.yml +73 -0
- data/.overcommit_gems +8 -0
- data/.overcommit_gems.lock +72 -0
- data/.rspec +1 -1
- data/.rubocop.yml +139 -0
- data/.rubocop_todo.yml +0 -0
- data/Gemfile +5 -8
- data/Gemfile.lock +194 -0
- data/README.md +6 -1
- data/Rakefile +1 -1
- data/lib/metanol/engine.rb +1 -1
- data/lib/metanol/engine_controller.rb +3 -6
- data/lib/metanol/helpers.rb +5 -5
- data/lib/metanol/meta/base.rb +79 -66
- data/lib/metanol/meta/main.rb +10 -8
- data/lib/metanol/meta/micro_data.rb +9 -9
- data/lib/metanol/meta/open_graph.rb +16 -14
- data/lib/metanol/meta/webmaster.rb +17 -15
- data/lib/metanol/railtie.rb +5 -5
- data/lib/metanol/support.rb +5 -5
- data/lib/metanol/version.rb +1 -1
- data/metanol.gemspec +36 -18
- metadata +97 -29
- data/spec/controllers/home_controller_spec.rb +0 -39
- data/spec/controllers/tests_controller_spec.rb +0 -194
- data/spec/spec_helper.rb +0 -22
- data/spec/support/application.rb +0 -59
@@ -1,194 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class TestsController < ApplicationController; end
|
4
|
-
|
5
|
-
describe TestsController do
|
6
|
-
|
7
|
-
context "render only main meta tags" do
|
8
|
-
controller do
|
9
|
-
def index
|
10
|
-
meta :title, "Users List"
|
11
|
-
meta :description, "Description for a users list"
|
12
|
-
og_meta title: "OpenGraph Title", description: "OpenGraph Description"
|
13
|
-
render :inline => <<-ERB
|
14
|
-
<%= metanol_main_tags %>
|
15
|
-
ERB
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
before { get :index }
|
20
|
-
|
21
|
-
it { response.should_not have_selector('meta[content="OpenGraph Title"]', property: 'og:title') }
|
22
|
-
it { response.should_not have_selector('meta[content="OpenGraph Description"]', property: 'og:description') }
|
23
|
-
it { response.should have_selector('title', content: 'Users List') }
|
24
|
-
it { response.should have_selector('meta[content="Description for a users list"]', name: 'description') }
|
25
|
-
end
|
26
|
-
|
27
|
-
context "render only open graph meta tags" do
|
28
|
-
controller do
|
29
|
-
def index
|
30
|
-
meta :title, "Users List"
|
31
|
-
meta :description, "Description for a users list"
|
32
|
-
og_meta title: "OpenGraph Title", description: "OpenGraph Description"
|
33
|
-
render :inline => <<-ERB
|
34
|
-
<%= metanol_og_tags %>
|
35
|
-
ERB
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
before { get :index }
|
40
|
-
|
41
|
-
it { response.should have_selector('meta[content="OpenGraph Title"]', property: 'og:title') }
|
42
|
-
it { response.should have_selector('meta[content="OpenGraph Description"]', property: 'og:description') }
|
43
|
-
it { response.should_not have_selector('title', content: 'Users List') }
|
44
|
-
it { response.should_not have_selector('meta[content="Description for a users list"]', name: 'description') }
|
45
|
-
end
|
46
|
-
|
47
|
-
context "render all meta tags" do
|
48
|
-
controller do
|
49
|
-
def index
|
50
|
-
meta :title, "Users List"
|
51
|
-
meta :description, "Description for a users list"
|
52
|
-
og_meta title: "OpenGraph Title", description: "OpenGraph Description"
|
53
|
-
md_meta description: "MicroData Description"
|
54
|
-
render :inline => <<-ERB
|
55
|
-
<%= metanol_tags %>
|
56
|
-
ERB
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
before { get :index }
|
61
|
-
|
62
|
-
it { response.should have_selector('meta[content="OpenGraph Title"]', property: 'og:title') }
|
63
|
-
it { response.should have_selector('meta[content="OpenGraph Description"]', property: 'og:description') }
|
64
|
-
it { response.should have_selector('title', content: 'Users List') }
|
65
|
-
it { response.should have_selector('meta[content="Description for a users list"]', name: 'description') }
|
66
|
-
it { response.should have_selector('meta[content="MicroData Description"]', itemprop: 'description') }
|
67
|
-
end
|
68
|
-
|
69
|
-
context "raise exception for unsupported metas" do
|
70
|
-
controller do
|
71
|
-
def index
|
72
|
-
meta :title, "Users List"
|
73
|
-
wm_meta fake: "Fake value"
|
74
|
-
render :inline => <<-ERB
|
75
|
-
<%= metanol_tags %>
|
76
|
-
ERB
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
it { expect { get :index }.to raise_error(NameError, "The meta tag 'fake' isn't supported.") }
|
81
|
-
end
|
82
|
-
|
83
|
-
context "filter whitespaces" do
|
84
|
-
controller do
|
85
|
-
def index
|
86
|
-
meta :description, "Description \t\nfor \ta \tusers \r\nlist", :whitespaces
|
87
|
-
render :inline => <<-ERB
|
88
|
-
<%= metanol_main_tags %>
|
89
|
-
ERB
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
before { get :index }
|
94
|
-
|
95
|
-
it('success') { response.should have_selector('meta[content="Description for a users list"]', name: 'description') }
|
96
|
-
end
|
97
|
-
|
98
|
-
context "filter HTML tags" do
|
99
|
-
controller do
|
100
|
-
def index
|
101
|
-
meta({description: "<div>Description <br/>for <b>a users</b> <br>list</div>", keywords: "key,word"}, :html)
|
102
|
-
render :inline => <<-ERB
|
103
|
-
<%= metanol_main_tags %>
|
104
|
-
ERB
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
before { get :index }
|
109
|
-
|
110
|
-
it('success') { response.should have_selector('meta[content="Description for a users list"]', name: 'description') }
|
111
|
-
end
|
112
|
-
|
113
|
-
context "filter HTML tags and whitespaces" do
|
114
|
-
controller do
|
115
|
-
def index
|
116
|
-
meta(:description, "<div>\tDescription \r\n<br/>for \t<b>a users</b> \r\n<br>list</div>", :html, :whitespaces)
|
117
|
-
render :inline => <<-ERB
|
118
|
-
<%= metanol_main_tags %>
|
119
|
-
ERB
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
before { get :index }
|
124
|
-
|
125
|
-
it('success') { response.should have_selector('meta[content=" Description for a users list"]', name: 'description') }
|
126
|
-
end
|
127
|
-
|
128
|
-
context "filter spaces - leave only 1 space between words" do
|
129
|
-
controller do
|
130
|
-
def index
|
131
|
-
meta :description, "Description for a users list", :overspaces
|
132
|
-
render :inline => <<-ERB
|
133
|
-
<%= metanol_main_tags %>
|
134
|
-
ERB
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
before { get :index }
|
139
|
-
|
140
|
-
it('success') { response.should have_selector('meta[content="Description for a users list"]', name: 'description') }
|
141
|
-
end
|
142
|
-
|
143
|
-
context "clean up a value from whitespaces, html tags etc (run all filters)" do
|
144
|
-
controller do
|
145
|
-
def index
|
146
|
-
meta(:description, "<div>\tDescription \r\n<br/>for \t<b>a users</b> \r\n<br>list</div>", :clean)
|
147
|
-
render :inline => <<-ERB
|
148
|
-
<%= metanol_main_tags %>
|
149
|
-
ERB
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
before { get :index }
|
154
|
-
|
155
|
-
it { response.should have_selector('meta[content=" Description for a users list"]', name: 'description') }
|
156
|
-
end
|
157
|
-
|
158
|
-
context "returns meta values in a controller and in a view" do
|
159
|
-
controller do
|
160
|
-
def index
|
161
|
-
meta :title, 'Users List'
|
162
|
-
wm_meta :alexa, 'alexa code'
|
163
|
-
og_meta title: 'OpenGraph Title'
|
164
|
-
md_meta description: 'MicroData Desc'
|
165
|
-
|
166
|
-
@meta = get_meta :title
|
167
|
-
@wm_meta = get_wm_meta :alexa
|
168
|
-
@og_meta = get_og_meta :title
|
169
|
-
@md_meta = get_md_meta :description
|
170
|
-
@og_no_meta = get_og_meta :bad_meta_name
|
171
|
-
|
172
|
-
render :inline => <<-ERB
|
173
|
-
<span>Main meta is <%= get_meta :title %></span>
|
174
|
-
<span>OpenGraph meta is <%= get_og_meta :title %></span>
|
175
|
-
<span>Webmaster meta is <%= get_wm_meta :alexa %></span>
|
176
|
-
<span>MicroData meta is <%= get_md_meta :description %></span>
|
177
|
-
ERB
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
before { get :index }
|
182
|
-
|
183
|
-
it { response.should have_selector('span', content: 'Main meta is Users List') }
|
184
|
-
it { response.should have_selector('span', content: 'OpenGraph meta is OpenGraph Title') }
|
185
|
-
it { response.should have_selector('span', content: 'Webmaster meta is alexa code') }
|
186
|
-
it { response.should have_selector('span', content: 'MicroData meta is MicroData Desc') }
|
187
|
-
it { assigns(:meta).should == 'Users List' }
|
188
|
-
it { assigns(:wm_meta).should == 'alexa code' }
|
189
|
-
it { assigns(:og_meta).should == 'OpenGraph Title' }
|
190
|
-
it { assigns(:md_meta).should == 'MicroData Desc' }
|
191
|
-
it { assigns(:og_no_meta).should == nil }
|
192
|
-
end
|
193
|
-
|
194
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'rails'
|
2
|
-
require 'rspec/autorun'
|
3
|
-
require 'metanol'
|
4
|
-
|
5
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
6
|
-
require 'rspec/rails'
|
7
|
-
|
8
|
-
RSpec.configure do |config|
|
9
|
-
|
10
|
-
# If true, the base class of anonymous controllers will be inferred
|
11
|
-
# automatically. This will be the default behavior in future versions of
|
12
|
-
# rspec-rails.
|
13
|
-
config.infer_base_class_for_anonymous_controllers = true
|
14
|
-
|
15
|
-
# Run specs in random order to surface order dependencies. If you find an
|
16
|
-
# order dependency and want to debug it, you can fix the order by providing
|
17
|
-
# the seed, which is printed after each run.
|
18
|
-
# --seed 1234
|
19
|
-
config.order = "random"
|
20
|
-
|
21
|
-
config.include Rails.application.routes.url_helpers
|
22
|
-
end
|
data/spec/support/application.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'action_controller/railtie'
|
2
|
-
require 'action_view/railtie'
|
3
|
-
require 'active_record'
|
4
|
-
|
5
|
-
ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}}
|
6
|
-
ActiveRecord::Base.establish_connection('test')
|
7
|
-
|
8
|
-
app = Class.new(Rails::Application)
|
9
|
-
app.config.secret_token = 'f974ebb750a8e200c85f7a749d589fa2'
|
10
|
-
app.config.session_store :cookie_store, :key => '_myapp_session'
|
11
|
-
app.config.active_support.deprecation = :log
|
12
|
-
app.config.eager_load = false
|
13
|
-
app.config.root = File.dirname(__FILE__)
|
14
|
-
Rails.backtrace_cleaner.remove_silencers!
|
15
|
-
app.initialize!
|
16
|
-
|
17
|
-
app.routes.draw do
|
18
|
-
resources :tests
|
19
|
-
resources :home do
|
20
|
-
collection do
|
21
|
-
get :get_title
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class ApplicationController < ActionController::Base; end
|
27
|
-
|
28
|
-
class ParentController < ApplicationController
|
29
|
-
wm_meta :alexa, 'alexa code'
|
30
|
-
wm_meta :yandex, 'yandex code'
|
31
|
-
wm_meta bing: 'bing code', google: 'google code'
|
32
|
-
end
|
33
|
-
|
34
|
-
class HomeController < ParentController
|
35
|
-
og_meta :type, 'website'
|
36
|
-
og_meta :locale, 'uk_UA'
|
37
|
-
|
38
|
-
def new
|
39
|
-
render :inline => <<-ERB
|
40
|
-
<%= metanol_wm_tags %>
|
41
|
-
ERB
|
42
|
-
end
|
43
|
-
|
44
|
-
def index
|
45
|
-
meta :title, 'Index Page'
|
46
|
-
og_meta title: 'OpenGraph Title', description: 'OpenGraph Description'
|
47
|
-
render :inline => <<-ERB
|
48
|
-
<%= metanol_tags %>
|
49
|
-
ERB
|
50
|
-
end
|
51
|
-
|
52
|
-
def get_title
|
53
|
-
render :inline => <<-ERB
|
54
|
-
<%= metanol_main_tags %>
|
55
|
-
ERB
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
Object.const_set(:ApplicationHelper, Module.new)
|