open_graph_reader 0.2.0 → 0.3.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 +4 -4
- data/lib/open_graph_reader.rb +20 -1
- data/lib/open_graph_reader/builder.rb +14 -10
- data/lib/open_graph_reader/configuration.rb +28 -3
- data/lib/open_graph_reader/definitions.rb +1 -1
- data/lib/open_graph_reader/object.rb +4 -4
- data/lib/open_graph_reader/object/dsl.rb +3 -1
- data/lib/open_graph_reader/object/dsl/types.rb +29 -9
- data/lib/open_graph_reader/parser.rb +7 -0
- data/lib/open_graph_reader/version.rb +1 -1
- data/spec/fixtures/real_world/image_path.html +699 -0
- data/spec/fixtures/real_world/missing_title.html +607 -0
- data/spec/fixtures/real_world/undefined_property_2.html +809 -0
- data/spec/integration/invalid_examples_spec.rb +13 -9
- data/spec/integration/real_world_spec.rb +60 -2
- metadata +7 -1
@@ -1,18 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe "invalid examples" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
describe "plain" do
|
5
|
+
it "says there are no tags" do
|
6
|
+
expect {
|
7
|
+
OpenGraphReader.parse! example_html 'plain'
|
8
|
+
}.to raise_error OpenGraphReader::NoOpenGraphDataError, /OpenGraph tags/
|
9
|
+
end
|
10
|
+
|
11
|
+
it "says there are no tags with title synthesization turend on" do
|
12
|
+
OpenGraphReader.config.synthesize_title = true
|
13
|
+
|
14
|
+
expect {
|
15
|
+
OpenGraphReader.parse! example_html 'plain'
|
16
|
+
}.to raise_error OpenGraphReader::NoOpenGraphDataError, /OpenGraph tags/
|
11
17
|
end
|
12
18
|
end
|
13
19
|
|
14
|
-
# Most parsers synthesize missing required properties, however
|
15
|
-
# we do not (yet), making this example an invalid object
|
16
20
|
describe "min" do
|
17
21
|
it "has missing required properties" do
|
18
22
|
expect {
|
@@ -79,7 +79,7 @@ RSpec.describe "real world examples" do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
describe "undefined_property" do
|
82
|
-
it "parses" do
|
82
|
+
it "parses (1)" do
|
83
83
|
object = OpenGraphReader.parse! fixture_html 'real_world/undefined_property'
|
84
84
|
|
85
85
|
expect(object.og.locale.to_s).to eq "es_ES"
|
@@ -91,13 +91,33 @@ RSpec.describe "real world examples" do
|
|
91
91
|
expect(object.og.image.url).to eq "http://regeneracion.mx/wp-content/uploads/2014/12/Infiltrados.jpg"
|
92
92
|
end
|
93
93
|
|
94
|
-
it "does not parse in strict mode" do
|
94
|
+
it "does not parse in strict mode (1)" do
|
95
95
|
OpenGraphReader.config.strict = true
|
96
96
|
|
97
97
|
expect {
|
98
98
|
OpenGraphReader.parse! fixture_html 'real_world/undefined_property'
|
99
99
|
}.to raise_error OpenGraphReader::InvalidObjectError, /Undefined property/
|
100
100
|
end
|
101
|
+
|
102
|
+
it "parses (2)" do
|
103
|
+
object = OpenGraphReader.parse! fixture_html 'real_world/undefined_property_2'
|
104
|
+
|
105
|
+
|
106
|
+
expect(object.og.title).to eq "Emergency call system for all new cars by 2018"
|
107
|
+
expect(object.og.type).to eq "article"
|
108
|
+
expect(object.og.description).to eq "The European Parliament and EU member states have agreed that new cars must be fitted with an automated system to alert emergency services in event of a crash."
|
109
|
+
expect(object.og.site_name).to eq "BBC News"
|
110
|
+
expect(object.og.url).to eq "http://www.bbc.co.uk/news/technology-30337272"
|
111
|
+
expect(object.og.image.url).to eq "http://news.bbcimg.co.uk/media/images/79520000/jpg/_79520623_79519885.jpg"
|
112
|
+
end
|
113
|
+
|
114
|
+
it "does not parse in strict mode (2)" do
|
115
|
+
OpenGraphReader.config.strict = true
|
116
|
+
|
117
|
+
expect {
|
118
|
+
OpenGraphReader.parse! fixture_html 'real_world/undefined_property_2'
|
119
|
+
}.to raise_error OpenGraphReader::InvalidObjectError, /Undefined property/
|
120
|
+
end
|
101
121
|
end
|
102
122
|
|
103
123
|
describe "unknown_namespace" do
|
@@ -118,4 +138,42 @@ RSpec.describe "real world examples" do
|
|
118
138
|
}.to raise_error OpenGraphReader::InvalidObjectError, /is not a registered namespace/
|
119
139
|
end
|
120
140
|
end
|
141
|
+
|
142
|
+
|
143
|
+
describe "missing_title" do
|
144
|
+
it "does not parse" do
|
145
|
+
expect {
|
146
|
+
OpenGraphReader.parse! fixture_html 'real_world/missing_title'
|
147
|
+
}.to raise_error OpenGraphReader::InvalidObjectError, /Missing required/
|
148
|
+
end
|
149
|
+
|
150
|
+
it "does parse when synthesizing titles" do
|
151
|
+
OpenGraphReader.config.synthesize_title = true
|
152
|
+
|
153
|
+
object = OpenGraphReader.parse! fixture_html 'real_world/missing_title'
|
154
|
+
|
155
|
+
expect(object.og.type).to eq "website"
|
156
|
+
expect(object.og.title).to eq "Ultra Conservative Christian Lady Goes To Museum, Tries To Debunk Evolution, Fails Beyond Miserably | Geekologie"
|
157
|
+
expect(object.og.image.url).to eq "http://geekologie.com/assets_c/2014/11/crazy-lady-goes-to-the-museum-thumb-640x389-29314.jpg"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "image_path" do
|
162
|
+
it "does not parse" do
|
163
|
+
expect {
|
164
|
+
OpenGraphReader.parse! fixture_html 'real_world/image_path'
|
165
|
+
}.to raise_error OpenGraphReader::InvalidObjectError, /does not start with/
|
166
|
+
end
|
167
|
+
|
168
|
+
it "parses with image paths turned on" do
|
169
|
+
OpenGraphReader.config.synthesize_image_url = true
|
170
|
+
|
171
|
+
object = OpenGraphReader.parse! fixture_html('real_world/image_path'), 'http://fritzing.org/download/'
|
172
|
+
|
173
|
+
expect(object.og.title).to eq "Fritzing"
|
174
|
+
expect(object.og.type).to eq "website"
|
175
|
+
expect(object.og.image.url).to eq "http://fritzing.org/static/img/fritzing.png"
|
176
|
+
expect(object.og.url).to eq "http://fritzing.org/"
|
177
|
+
end
|
178
|
+
end
|
121
179
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_graph_reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonne Haß
|
@@ -165,11 +165,14 @@ files:
|
|
165
165
|
- spec/fixtures/examples/video-array.html
|
166
166
|
- spec/fixtures/examples/video-movie.html
|
167
167
|
- spec/fixtures/examples/video.html
|
168
|
+
- spec/fixtures/real_world/image_path.html
|
168
169
|
- spec/fixtures/real_world/missing_image.html
|
170
|
+
- spec/fixtures/real_world/missing_title.html
|
169
171
|
- spec/fixtures/real_world/mixed_case_properties.html
|
170
172
|
- spec/fixtures/real_world/mixed_case_type.html
|
171
173
|
- spec/fixtures/real_world/not_a_reference.html
|
172
174
|
- spec/fixtures/real_world/undefined_property.html
|
175
|
+
- spec/fixtures/real_world/undefined_property_2.html
|
173
176
|
- spec/fixtures/real_world/unknown_namespace.html
|
174
177
|
- spec/fixtures/real_world/unknown_type.html
|
175
178
|
- spec/integration/invalid_examples_spec.rb
|
@@ -249,11 +252,14 @@ test_files:
|
|
249
252
|
- spec/fixtures/examples/video-array.html
|
250
253
|
- spec/fixtures/examples/video-movie.html
|
251
254
|
- spec/fixtures/examples/video.html
|
255
|
+
- spec/fixtures/real_world/image_path.html
|
252
256
|
- spec/fixtures/real_world/missing_image.html
|
257
|
+
- spec/fixtures/real_world/missing_title.html
|
253
258
|
- spec/fixtures/real_world/mixed_case_properties.html
|
254
259
|
- spec/fixtures/real_world/mixed_case_type.html
|
255
260
|
- spec/fixtures/real_world/not_a_reference.html
|
256
261
|
- spec/fixtures/real_world/undefined_property.html
|
262
|
+
- spec/fixtures/real_world/undefined_property_2.html
|
257
263
|
- spec/fixtures/real_world/unknown_namespace.html
|
258
264
|
- spec/fixtures/real_world/unknown_type.html
|
259
265
|
- spec/integration/invalid_examples_spec.rb
|