middleman-dato 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/middleman_dato/middleman_extension.rb +5 -1
- data/lib/middleman_dato/version.rb +1 -1
- metadata +2 -12
- data/spec/middleman_dato/meta_tags/article_modified_time_spec.rb +0 -24
- data/spec/middleman_dato/meta_tags/favicon_spec.rb +0 -188
- data/spec/middleman_dato/meta_tags/image_spec.rb +0 -40
- data/spec/middleman_dato/meta_tags/og_locale_spec.rb +0 -22
- data/spec/support/mock_builder.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6283b5f17bc1ce6862db2f81ad9e502a3a438561
|
4
|
+
data.tar.gz: cc533e3a5b5ae735d718d22f310bf4f74d844781
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa1664446c6126a0773dca0cb27df4f0eea14908aceed061e1438c249f56f3de082c12825ca469d506f8214d5380fffab7bc3d9e4fa7dbca03711d761f7f497
|
7
|
+
data.tar.gz: 65f948fd992d0f1b301756b0cbd734a96c3f1943946de204bd92b33736fd824c274e9e3e364b9b7212973ea2ba1ab810a59795de78ceb9ff5fc3a5f2d3b5c98e
|
@@ -46,7 +46,11 @@ module MiddlemanDato
|
|
46
46
|
token = options[:token]
|
47
47
|
|
48
48
|
if token.blank? && File.exist?('.env')
|
49
|
-
Dotenv::Environment.new('.env')['DATO_API_TOKEN']
|
49
|
+
token = Dotenv::Environment.new('.env')['DATO_API_TOKEN']
|
50
|
+
end
|
51
|
+
|
52
|
+
if token.blank?
|
53
|
+
raise RuntimeError, 'Missing DatoCMS site API token!'
|
50
54
|
end
|
51
55
|
|
52
56
|
@client ||= Dato::Site::Client.new(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-dato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Verna
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coveralls
|
@@ -100,12 +100,7 @@ files:
|
|
100
100
|
- lib/middleman_dato/version.rb
|
101
101
|
- lib/middleman_dato/watcher.rb
|
102
102
|
- middleman-dato.gemspec
|
103
|
-
- spec/middleman_dato/meta_tags/article_modified_time_spec.rb
|
104
|
-
- spec/middleman_dato/meta_tags/favicon_spec.rb
|
105
|
-
- spec/middleman_dato/meta_tags/image_spec.rb
|
106
|
-
- spec/middleman_dato/meta_tags/og_locale_spec.rb
|
107
103
|
- spec/spec_helper.rb
|
108
|
-
- spec/support/mock_builder.rb
|
109
104
|
homepage: http://cantierecreativo.net
|
110
105
|
licenses: []
|
111
106
|
metadata: {}
|
@@ -130,10 +125,5 @@ signing_key:
|
|
130
125
|
specification_version: 4
|
131
126
|
summary: Fetches data from a Dato site
|
132
127
|
test_files:
|
133
|
-
- spec/middleman_dato/meta_tags/article_modified_time_spec.rb
|
134
|
-
- spec/middleman_dato/meta_tags/favicon_spec.rb
|
135
|
-
- spec/middleman_dato/meta_tags/image_spec.rb
|
136
|
-
- spec/middleman_dato/meta_tags/og_locale_spec.rb
|
137
128
|
- spec/spec_helper.rb
|
138
|
-
- spec/support/mock_builder.rb
|
139
129
|
has_rdoc:
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
module MiddlemanDato
|
5
|
-
module MetaTags
|
6
|
-
RSpec.describe ArticleModifiedTime do
|
7
|
-
subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
|
8
|
-
let(:builder) { ::MockBuilder.new }
|
9
|
-
let(:base_url) { nil }
|
10
|
-
let(:site) { nil }
|
11
|
-
let(:item) do
|
12
|
-
double('Item', updated_at: Time.now, singleton?: false)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.value' do
|
16
|
-
context 'if item is not singleton' do
|
17
|
-
it 'returns an ISO 8601 time representation' do
|
18
|
-
expect(meta_tag.value).not_to be_nil
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,188 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'active_support/core_ext/hash/indifferent_access'
|
4
|
-
|
5
|
-
require 'pry'
|
6
|
-
|
7
|
-
module MiddlemanDato
|
8
|
-
module MetaTags
|
9
|
-
RSpec.describe Favicon do
|
10
|
-
subject(:meta_tag) { described_class.new(builder, entity, theme_color) }
|
11
|
-
let(:builder) { ::MockBuilder.new }
|
12
|
-
let(:theme_color) { '#ffffff' }
|
13
|
-
let(:application_name) { 'An app name' }
|
14
|
-
let(:image_format) { 'image_format' }
|
15
|
-
let(:entity) do
|
16
|
-
double(
|
17
|
-
'MiddlemanDato::JsonApiEntity',
|
18
|
-
favicon: favicon,
|
19
|
-
global_seo: ActiveSupport::HashWithIndifferentAccess.new(
|
20
|
-
site_name: application_name
|
21
|
-
)
|
22
|
-
)
|
23
|
-
end
|
24
|
-
let(:favicon) do
|
25
|
-
ActiveSupport::HashWithIndifferentAccess.new(
|
26
|
-
path: '/path/to/file',
|
27
|
-
width: 1000,
|
28
|
-
height: 1000,
|
29
|
-
format: image_format,
|
30
|
-
size: 10_000
|
31
|
-
)
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#build_tags' do
|
35
|
-
let(:result) { meta_tag.build_tags }
|
36
|
-
|
37
|
-
it 'render the application-name' do
|
38
|
-
meta = result.find { |t| t[0] == :meta && t[1][:name] == 'application-name' }
|
39
|
-
expect(meta).to be_present
|
40
|
-
expect(meta[1][:content]).to eq application_name
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'render the theme-color' do
|
44
|
-
meta = result.find { |t| t[0] == :meta && t[1][:name] == 'theme-color' }
|
45
|
-
expect(meta).to be_present
|
46
|
-
expect(meta[1][:content]).to eq theme_color
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'render the msapplication-TileColor' do
|
50
|
-
meta = result.find { |t| t[0] == :meta && t[1][:name] == 'msapplication-TileColor' }
|
51
|
-
expect(meta).to be_present
|
52
|
-
expect(meta[1][:content]).to eq theme_color
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe '#image' do
|
57
|
-
context 'when favicon is not present' do
|
58
|
-
let(:favicon) { nil }
|
59
|
-
|
60
|
-
it 'renders nil' do
|
61
|
-
expect(meta_tag.image).to eq nil
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context 'else' do
|
66
|
-
let(:image_obj) { double('Dato::Local::FieldType::Image', format: image_format) }
|
67
|
-
|
68
|
-
it 'return the image parsed with Dato::Local::FieldType::Image' do
|
69
|
-
allow(Dato::Local::FieldType::Image).to receive(:parse).and_return(image_obj)
|
70
|
-
image = meta_tag.image
|
71
|
-
expect(Dato::Local::FieldType::Image).to have_received(:parse)
|
72
|
-
.with(favicon, nil)
|
73
|
-
expect(image).to eq image_obj
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe '#url' do
|
79
|
-
let(:image) { instance_double('Dato::Local::FieldType::Image', file: file) }
|
80
|
-
let(:file) { instance_double('Imgix::Path') }
|
81
|
-
let(:width) { 1 }
|
82
|
-
let(:height) { 2 }
|
83
|
-
|
84
|
-
let(:result) { meta_tag.url(width, height) }
|
85
|
-
|
86
|
-
before do
|
87
|
-
allow(meta_tag).to receive(:image).and_return(image)
|
88
|
-
allow(file).to receive(:width).and_return(file)
|
89
|
-
allow(file).to receive(:height).and_return(file)
|
90
|
-
allow(file).to receive(:to_url)
|
91
|
-
result
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'generates the url for that size' do
|
95
|
-
expect(meta_tag).to have_received(:image)
|
96
|
-
expect(image).to have_received(:file)
|
97
|
-
expect(file).to have_received(:width).with(width)
|
98
|
-
expect(file).to have_received(:height).with(height)
|
99
|
-
expect(file).to have_received(:to_url)
|
100
|
-
end
|
101
|
-
|
102
|
-
context 'without height' do
|
103
|
-
let(:result) { meta_tag.url(width) }
|
104
|
-
|
105
|
-
it 'call height with width value' do
|
106
|
-
expect(file).to have_received(:height).with(width)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe '#build_apple_icon_tags' do
|
112
|
-
let(:result) { meta_tag.build_apple_icon_tags }
|
113
|
-
let(:image_url) { '/path/to/image' }
|
114
|
-
|
115
|
-
before do
|
116
|
-
allow(meta_tag).to receive(:url).and_return(image_url)
|
117
|
-
result
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'render an apple-touch-icon link for each size' do
|
121
|
-
described_class::APPLE_TOUCH_ICON_SIZES.each do |apple_icon_size|
|
122
|
-
meta = result.find do |t|
|
123
|
-
t[0] == :link &&
|
124
|
-
t[1][:rel] == 'apple-touch-icon' &&
|
125
|
-
t[1][:sizes] == "#{apple_icon_size}x#{apple_icon_size}"
|
126
|
-
end
|
127
|
-
|
128
|
-
expect(meta_tag).to have_received(:url).with(apple_icon_size)
|
129
|
-
expect(meta).to be_present
|
130
|
-
expect(meta[1][:href]).to eq image_url
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
describe '#build_apple_icon_tags' do
|
136
|
-
let(:result) { meta_tag.build_icon_tags }
|
137
|
-
let(:image) { instance_double('Dato::Local::FieldType::Image', format: format) }
|
138
|
-
let(:format) { 'png' }
|
139
|
-
let(:image_url) { '/path/to/image' }
|
140
|
-
|
141
|
-
before do
|
142
|
-
allow(meta_tag).to receive(:url).and_return(image_url)
|
143
|
-
allow(meta_tag).to receive(:image).and_return(image)
|
144
|
-
result
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'render an icon link for each size' do
|
148
|
-
described_class::ICON_SIZES.each do |icon_size|
|
149
|
-
meta = result.find do |t|
|
150
|
-
t[0] == :link &&
|
151
|
-
t[1][:rel] == 'icon' &&
|
152
|
-
t[1][:sizes] == "#{icon_size}x#{icon_size}"
|
153
|
-
end
|
154
|
-
|
155
|
-
expect(meta_tag).to have_received(:url).with(icon_size)
|
156
|
-
expect(meta).to be_present
|
157
|
-
expect(meta[1][:href]).to eq image_url
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
describe '#build_application_tags' do
|
163
|
-
let(:result) { meta_tag.build_application_tags }
|
164
|
-
let(:image) { instance_double('Dato::Local::FieldType::Image', format: format) }
|
165
|
-
let(:format) { 'png' }
|
166
|
-
let(:image_url) { '/path/to/image' }
|
167
|
-
|
168
|
-
before do
|
169
|
-
allow(meta_tag).to receive(:url).and_return(image_url)
|
170
|
-
allow(meta_tag).to receive(:image).and_return(image)
|
171
|
-
result
|
172
|
-
end
|
173
|
-
|
174
|
-
it 'render application meta for each size' do
|
175
|
-
described_class::APPLICATION_SIZES.each do |size|
|
176
|
-
meta = result.find do |t|
|
177
|
-
t[0] == :meta &&
|
178
|
-
t[1][:name] == "msapplication-square#{size}x#{size}logo"
|
179
|
-
end
|
180
|
-
expect(meta_tag).to have_received(:url).with(size)
|
181
|
-
expect(meta).to be_present
|
182
|
-
expect(meta[1][:content]).to eq image_url
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
module MiddlemanDato
|
5
|
-
module MetaTags
|
6
|
-
RSpec.describe Image do
|
7
|
-
subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
|
8
|
-
let(:builder) { ::MockBuilder.new }
|
9
|
-
let(:base_url) { nil }
|
10
|
-
let(:site) { nil }
|
11
|
-
let(:item) do
|
12
|
-
double(
|
13
|
-
'MiddlemanDato::Item',
|
14
|
-
fields: [double('MiddlemanDato::JsonApiEntity', api_key: 'foo', field_type: 'image')],
|
15
|
-
foo: image,
|
16
|
-
singleton?: false
|
17
|
-
)
|
18
|
-
end
|
19
|
-
|
20
|
-
let(:field) do
|
21
|
-
{ field_type: 'image' }
|
22
|
-
end
|
23
|
-
|
24
|
-
let(:image) do
|
25
|
-
double(
|
26
|
-
'MiddlemanDato::JsonApiEntity',
|
27
|
-
width: 300,
|
28
|
-
height: 300,
|
29
|
-
file: double('File', format: double('Imgix', to_url: 'http://google.com'))
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '.value' do
|
34
|
-
it 'returns the current locale' do
|
35
|
-
expect(meta_tag.image).to eq 'http://google.com'
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
module MiddlemanDato
|
5
|
-
module MetaTags
|
6
|
-
RSpec.describe OgLocale do
|
7
|
-
subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
|
8
|
-
let(:builder) { ::MockBuilder.new }
|
9
|
-
let(:base_url) { nil }
|
10
|
-
let(:site) { nil }
|
11
|
-
let(:item) { nil }
|
12
|
-
|
13
|
-
describe '#value' do
|
14
|
-
it 'returns the current locale' do
|
15
|
-
I18n.with_locale(:it) do
|
16
|
-
expect(meta_tag.value).to eq 'it_IT'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|