onebox 1.1.0 → 1.2.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/.gitignore +1 -0
- data/.rubocop.yml +7 -452
- data/Gemfile +1 -1
- data/README.md +23 -45
- data/lib/onebox.rb +21 -13
- data/lib/onebox/engine.rb +53 -43
- data/lib/onebox/engine/amazon_onebox.rb +34 -7
- data/lib/onebox/engine/classic_google_maps_onebox.rb +37 -0
- data/lib/onebox/engine/github_blob_onebox.rb +27 -7
- data/lib/onebox/engine/github_commit_onebox.rb +8 -15
- data/lib/onebox/engine/github_gist_onebox.rb +10 -10
- data/lib/onebox/engine/github_pullrequest_onebox.rb +7 -15
- data/lib/onebox/engine/google_play_app_onebox.rb +30 -0
- data/lib/onebox/engine/html.rb +10 -1
- data/lib/onebox/engine/image_onebox.rb +13 -0
- data/lib/onebox/engine/stack_exchange_onebox.rb +25 -11
- data/lib/onebox/engine/standard_embed.rb +48 -0
- data/lib/onebox/engine/twitter_status_onebox.rb +100 -0
- data/lib/onebox/engine/whitelisted_generic_onebox.rb +223 -0
- data/lib/onebox/engine/wikipedia_onebox.rb +27 -5
- data/lib/onebox/engine/youtube_onebox.rb +22 -0
- data/lib/onebox/helpers.rb +24 -0
- data/lib/onebox/layout.rb +67 -0
- data/lib/onebox/layout_support.rb +16 -0
- data/lib/onebox/matcher.rb +6 -1
- data/lib/onebox/preview.rb +19 -6
- data/lib/onebox/version.rb +1 -1
- data/lib/onebox/view.rb +7 -12
- data/onebox.gemspec +7 -5
- data/spec/fixtures/amazon.response +1336 -2971
- data/spec/fixtures/githubblob.response +49 -921
- data/spec/fixtures/{android.response → googleplayapp.response} +1 -1
- data/spec/fixtures/stackexchange.response +1 -1889
- data/spec/fixtures/twitterstatus.response +3006 -0
- data/spec/fixtures/youtube-json.response +1 -0
- data/spec/fixtures/youtube.response +1625 -0
- data/spec/lib/onebox/engine/amazon_onebox_spec.rb +5 -20
- data/spec/lib/onebox/engine/classic_google_maps_onebox_spec.rb +28 -0
- data/spec/lib/onebox/engine/github_blob_onebox_spec.rb +6 -15
- data/spec/lib/onebox/engine/github_commit_onebox_spec.rb +14 -22
- data/spec/lib/onebox/engine/github_gist_onebox_spec.rb +6 -14
- data/spec/lib/onebox/engine/github_pullrequest_onebox_spec.rb +14 -26
- data/spec/lib/onebox/engine/google_play_app_onebox_spec.rb +28 -0
- data/spec/lib/onebox/engine/html_spec.rb +4 -6
- data/spec/lib/onebox/engine/json_spec.rb +4 -6
- data/spec/lib/onebox/engine/stack_exchange_onebox_spec.rb +4 -17
- data/spec/lib/onebox/engine/twitter_status_onebox_spec.rb +103 -0
- data/spec/lib/onebox/engine/whitelisted_generic_onebox_spec.rb +51 -0
- data/spec/lib/onebox/engine/wikipedia_onebox_spec.rb +4 -17
- data/spec/lib/onebox/engine/youtube_onebox_spec.rb +17 -0
- data/spec/lib/onebox/engine_spec.rb +35 -32
- data/spec/lib/onebox/layout_spec.rb +77 -0
- data/spec/lib/onebox/matcher_spec.rb +0 -15
- data/spec/lib/onebox/preview_spec.rb +39 -9
- data/spec/lib/onebox_spec.rb +15 -11
- data/spec/spec_helper.rb +60 -4
- data/spec/support/html_spec_helper.rb +2 -1
- data/templates/_layout.mustache +11 -4
- data/templates/amazon.mustache +4 -3
- data/templates/githubblob.mustache +7 -5
- data/templates/githubcommit.mustache +20 -11
- data/templates/githubpullrequest.mustache +19 -12
- data/templates/googleplayapp.mustache +4 -0
- data/templates/stackexchange.mustache +19 -3
- data/templates/twitterstatus.mustache +12 -0
- data/templates/whitelistedgeneric.mustache +5 -0
- data/templates/wikipedia.mustache +4 -3
- metadata +57 -166
- data/lib/onebox/engine/bliptv_onebox.rb +0 -28
- data/lib/onebox/engine/clikthrough_onebox.rb +0 -25
- data/lib/onebox/engine/college_humor_onebox.rb +0 -27
- data/lib/onebox/engine/dailymotion_onebox.rb +0 -28
- data/lib/onebox/engine/dotsub_onebox.rb +0 -27
- data/lib/onebox/engine/example_onebox.rb +0 -24
- data/lib/onebox/engine/flickr_onebox.rb +0 -26
- data/lib/onebox/engine/funny_or_die_onebox.rb +0 -28
- data/lib/onebox/engine/hulu_onebox.rb +0 -29
- data/lib/onebox/engine/imgur_image_onebox.rb +0 -26
- data/lib/onebox/engine/itunes_onebox.rb +0 -28
- data/lib/onebox/engine/kinomap_onebox.rb +0 -27
- data/lib/onebox/engine/nfb_onebox.rb +0 -28
- data/lib/onebox/engine/open_graph.rb +0 -11
- data/lib/onebox/engine/qik_onebox.rb +0 -25
- data/lib/onebox/engine/revision3_onebox.rb +0 -27
- data/lib/onebox/engine/slideshare_onebox.rb +0 -27
- data/lib/onebox/engine/sound_cloud_onebox.rb +0 -27
- data/lib/onebox/engine/spotify_onebox.rb +0 -27
- data/lib/onebox/engine/ted_onebox.rb +0 -28
- data/lib/onebox/engine/twitter_onebox.rb +0 -31
- data/lib/onebox/engine/viddler_onebox.rb +0 -28
- data/lib/onebox/engine/vimeo_onebox.rb +0 -27
- data/lib/onebox/engine/yfrog_onebox.rb +0 -28
- data/spec/fixtures/bliptv.response +0 -724
- data/spec/fixtures/clikthrough.response +0 -1472
- data/spec/fixtures/collegehumor.response +0 -1272
- data/spec/fixtures/dailymotion.response +0 -575
- data/spec/fixtures/dotsub.response +0 -1257
- data/spec/fixtures/example.response +0 -50
- data/spec/fixtures/flickr.response +0 -1292
- data/spec/fixtures/funnyordie.response +0 -2010
- data/spec/fixtures/githubgist.response +0 -468
- data/spec/fixtures/hulu.response +0 -339
- data/spec/fixtures/imguralbum.response +0 -941
- data/spec/fixtures/imgurimage.response +0 -872
- data/spec/fixtures/itunes.response +0 -402
- data/spec/fixtures/kinomap.response +0 -299
- data/spec/fixtures/nfb.response +0 -810
- data/spec/fixtures/opengraph.response +0 -27
- data/spec/fixtures/qik.response +0 -371
- data/spec/fixtures/revision3.response +0 -985
- data/spec/fixtures/rottentomatoesfresh.response +0 -3275
- data/spec/fixtures/rottentomatoesincomplete.response +0 -2313
- data/spec/fixtures/rottentomatoesrotten.response +0 -3549
- data/spec/fixtures/slideshare.response +0 -1745
- data/spec/fixtures/soundcloud.response +0 -1409
- data/spec/fixtures/spotify.response +0 -250
- data/spec/fixtures/ted.response +0 -1341
- data/spec/fixtures/twitter.response +0 -1712
- data/spec/fixtures/viddler.response +0 -442
- data/spec/fixtures/vimeo.response +0 -571
- data/spec/fixtures/yfrog.response +0 -464
- data/spec/lib/onebox/engine/bliptv_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/clikthrough_onebox_spec.rb +0 -29
- data/spec/lib/onebox/engine/college_humor_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/dailymotion_onebox_spec.rb +0 -39
- data/spec/lib/onebox/engine/dotsub_onebox_spec.rb +0 -39
- data/spec/lib/onebox/engine/example_onebox_spec.rb +0 -21
- data/spec/lib/onebox/engine/flickr_onebox_spec.rb +0 -33
- data/spec/lib/onebox/engine/funny_or_die_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/hulu_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/imgur_image_onebox_spec.rb +0 -29
- data/spec/lib/onebox/engine/itunes_onebox_spec.rb +0 -29
- data/spec/lib/onebox/engine/kinomap_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/nfb_onebox_spec.rb +0 -38
- data/spec/lib/onebox/engine/open_graph_spec.rb +0 -27
- data/spec/lib/onebox/engine/qik_onebox_spec.rb +0 -38
- data/spec/lib/onebox/engine/revision3_onebox_spec.rb +0 -39
- data/spec/lib/onebox/engine/slideshare_onebox_spec.rb +0 -33
- data/spec/lib/onebox/engine/sound_cloud_onebox_spec.rb +0 -39
- data/spec/lib/onebox/engine/spotify_onebox_spec.rb +0 -36
- data/spec/lib/onebox/engine/ted_onebox_spec.rb +0 -33
- data/spec/lib/onebox/engine/twitter_onebox_spec.rb +0 -47
- data/spec/lib/onebox/engine/viddler_onebox_spec.rb +0 -39
- data/spec/lib/onebox/engine/vimeo_onebox_spec.rb +0 -37
- data/spec/lib/onebox/engine/yfrog_onebox_spec.rb +0 -33
- data/spec/lib/onebox/view_spec.rb +0 -16
- data/templates/bliptv.mustache +0 -5
- data/templates/clikthrough.mustache +0 -4
- data/templates/collegehumor.mustache +0 -5
- data/templates/dailymotion.mustache +0 -5
- data/templates/dotsub.mustache +0 -5
- data/templates/example.mustache +0 -2
- data/templates/flickr.mustache +0 -4
- data/templates/funnyordie.mustache +0 -6
- data/templates/githubgist.mustache +0 -3
- data/templates/hulu.mustache +0 -6
- data/templates/imgurimage.mustache +0 -3
- data/templates/itunes.mustache +0 -4
- data/templates/kinomap.mustache +0 -5
- data/templates/nfb.mustache +0 -5
- data/templates/qik.mustache +0 -4
- data/templates/revision3.mustache +0 -5
- data/templates/slideshare.mustache +0 -4
- data/templates/soundcloud.mustache +0 -5
- data/templates/spotify.mustache +0 -4
- data/templates/ted.mustache +0 -5
- data/templates/twitter.mustache +0 -7
- data/templates/viddler.mustache +0 -5
- data/templates/vimeo.mustache +0 -5
- data/templates/yfrog.mustache +0 -4
|
@@ -3,35 +3,20 @@ require "spec_helper"
|
|
|
3
3
|
describe Onebox::Engine::AmazonOnebox do
|
|
4
4
|
before(:all) do
|
|
5
5
|
@link = "http://www.amazon.com/Knit-Noro-Accessories-Colorful-Little/dp/193609620X"
|
|
6
|
-
|
|
6
|
+
@uri = "http://www.amazon.com/gp/aw/d/193609620X"
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.defaults.cache.clear }
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
11
8
|
|
|
9
|
+
include_context "engines"
|
|
12
10
|
it_behaves_like "an engine"
|
|
13
11
|
|
|
14
12
|
describe "#to_html" do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it "returns the product title" do
|
|
18
|
-
expect(html).to include("Knit Noro: Accessories: 30 Colorful Little Knits [Hardcover]")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "returns the product image" do
|
|
22
|
-
expect(html).to include("61mI3YmHVnL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg")
|
|
13
|
+
it "includes image" do
|
|
14
|
+
expect(html).to include("img")
|
|
23
15
|
end
|
|
24
16
|
|
|
25
|
-
it "
|
|
17
|
+
it "includes description" do
|
|
26
18
|
expect(html).to include("Using only the finest natural materials and ecologically sound")
|
|
27
19
|
end
|
|
28
20
|
|
|
29
|
-
it "returns the product price" do
|
|
30
|
-
expect(html).to include("$18.77")
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "returns the product URL" do
|
|
34
|
-
expect(html).to include(link)
|
|
35
|
-
end
|
|
36
21
|
end
|
|
37
22
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Onebox::Engine::ClassicGoogleMapsOnebox do
|
|
4
|
+
describe 'long form url' do
|
|
5
|
+
before do
|
|
6
|
+
@link = "https://maps.google.ca/maps?q=Eiffel+Tower,+Avenue+Anatole+France,+Paris,+France&hl=en&sll=43.656878,-79.32085&sspn=0.932941,1.50238&oq=eiffel+&t=m&z=17&iwloc=A"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
include_context "engines"
|
|
10
|
+
it_behaves_like "an engine"
|
|
11
|
+
|
|
12
|
+
describe "#to_html" do
|
|
13
|
+
it "embeds the iframe to display the map" do
|
|
14
|
+
expect(html).to include("iframe")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe 'short form url' do
|
|
20
|
+
let(:long_url) { "https://maps.google.ca/maps?q=Brooklyn+Bridge,+Brooklyn,+NY,+United+States&hl=en&sll=43.656878,-79.32085&sspn=0.932941,1.50238&oq=brooklyn+bridge&t=m&z=17&iwloc=A" }
|
|
21
|
+
|
|
22
|
+
it "retrieves the long form url" do
|
|
23
|
+
onebox = described_class.new("http://goo.gl/maps/XffUa")
|
|
24
|
+
onebox.expects(:get_long_url).once.returns(long_url)
|
|
25
|
+
expect(onebox.url).to eq(long_url)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe Onebox::Engine::GithubBlobOnebox do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
fake(
|
|
4
|
+
before(:all) do
|
|
5
|
+
@link = "https://github.com/discourse/discourse/blob/master/lib/oneboxer/github_blob_onebox.rb"
|
|
6
|
+
fake("https://raw.github.com/discourse/discourse/master/lib/oneboxer/github_blob_onebox.rb", response(described_class.onebox_name))
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
+
include_context "engines"
|
|
9
10
|
it_behaves_like "an engine"
|
|
10
11
|
|
|
11
12
|
describe "#to_html" do
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
it "has file name" do
|
|
13
|
+
it "includes file name" do
|
|
15
14
|
expect(html).to include("github_blob_onebox.rb")
|
|
16
15
|
end
|
|
17
16
|
|
|
18
|
-
it "
|
|
19
|
-
expect(html).to include("50")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "has blob contents" do
|
|
17
|
+
it "includes blob contents" do
|
|
23
18
|
expect(html).to include("module Oneboxer")
|
|
24
19
|
end
|
|
25
|
-
|
|
26
|
-
it "has URL" do
|
|
27
|
-
expect(html).to include(link)
|
|
28
|
-
end
|
|
29
20
|
end
|
|
30
21
|
end
|
|
@@ -3,59 +3,51 @@ require "spec_helper"
|
|
|
3
3
|
describe Onebox::Engine::GithubCommitOnebox do
|
|
4
4
|
before(:all) do
|
|
5
5
|
@link = "https://github.com/discourse/discourse/commit/803d023e2307309f8b776ab3b8b7e38ba91c0919"
|
|
6
|
-
|
|
6
|
+
@uri = "https://api.github.com/repos/discourse/discourse/commits/803d023e2307309f8b776ab3b8b7e38ba91c0919"
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.defaults.cache.clear }
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
11
8
|
|
|
9
|
+
include_context "engines"
|
|
12
10
|
it_behaves_like "an engine"
|
|
13
11
|
|
|
14
12
|
describe "#to_html" do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it "has repo owner" do
|
|
13
|
+
it "includes owner" do
|
|
18
14
|
expect(html).to include("discourse")
|
|
19
15
|
end
|
|
20
16
|
|
|
21
|
-
it "
|
|
17
|
+
it "includes repository name" do
|
|
22
18
|
expect(html).to include("discourse")
|
|
23
19
|
end
|
|
24
20
|
|
|
25
|
-
it "
|
|
21
|
+
it "includes commit sha" do
|
|
26
22
|
expect(html).to include("803d023e2307309f8b776ab3b8b7e38ba91c0919")
|
|
27
23
|
end
|
|
28
24
|
|
|
29
|
-
it "
|
|
25
|
+
it "includes commit author gravatar" do
|
|
30
26
|
expect(html).to include("2F7d3010c11d08cf990b7614d2c2ca9098.png")
|
|
31
27
|
end
|
|
32
28
|
|
|
33
|
-
it "
|
|
29
|
+
it "includes commit message" do
|
|
34
30
|
expect(html).to include("Fixed GitHub auth")
|
|
35
31
|
end
|
|
36
32
|
|
|
37
|
-
it "
|
|
33
|
+
it "includes commit author" do
|
|
38
34
|
expect(html).to include("SamSaffron")
|
|
39
35
|
end
|
|
40
36
|
|
|
41
|
-
it "
|
|
42
|
-
expect(html).to include("
|
|
37
|
+
it "includes commit time and date" do
|
|
38
|
+
expect(html).to include("02:03AM - 02 Aug 13")
|
|
43
39
|
end
|
|
44
40
|
|
|
45
|
-
it "
|
|
46
|
-
expect(html).to include("1
|
|
41
|
+
it "includes number of files changed" do
|
|
42
|
+
expect(html).to include("1 file")
|
|
47
43
|
end
|
|
48
44
|
|
|
49
|
-
it "
|
|
45
|
+
it "includes number of additions" do
|
|
50
46
|
expect(html).to include("18 additions")
|
|
51
47
|
end
|
|
52
48
|
|
|
53
|
-
it "
|
|
49
|
+
it "includes number of deletions" do
|
|
54
50
|
expect(html).to include("2 deletions")
|
|
55
51
|
end
|
|
56
|
-
|
|
57
|
-
it "has URL" do
|
|
58
|
-
expect(html).to include(link)
|
|
59
|
-
end
|
|
60
52
|
end
|
|
61
53
|
end
|
|
@@ -3,27 +3,19 @@ require "spec_helper"
|
|
|
3
3
|
describe Onebox::Engine::GithubGistOnebox do
|
|
4
4
|
before(:all) do
|
|
5
5
|
@link = "https://gist.github.com/anikalindtner/153044e9bea3331cc103"
|
|
6
|
-
|
|
6
|
+
@uri = "https://api.github.com/gists/153044e9bea3331cc103"
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.defaults.cache.clear }
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
11
8
|
|
|
9
|
+
include_context "engines"
|
|
12
10
|
it_behaves_like "an engine"
|
|
13
11
|
|
|
14
12
|
describe "#to_html" do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it "has raw file contents" do
|
|
18
|
-
expect(html).to include("# Create a new blog post on GitHub")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "has author" do
|
|
22
|
-
expect(html).to include("anikalindtner")
|
|
13
|
+
it "includes sha" do
|
|
14
|
+
expect(html).to include("153044e9bea3331cc103")
|
|
23
15
|
end
|
|
24
16
|
|
|
25
|
-
it "
|
|
26
|
-
expect(html).to include(
|
|
17
|
+
it "includes script" do
|
|
18
|
+
expect(html).to include("script")
|
|
27
19
|
end
|
|
28
20
|
end
|
|
29
21
|
end
|
|
@@ -1,58 +1,46 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe Onebox::Engine::GithubPullRequestOnebox do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
before(:all) do
|
|
5
|
+
@link = "https://github.com/discourse/discourse/pull/1253/"
|
|
6
|
+
@uri = "https://api.github.com/repos/discourse/discourse/pulls/1253"
|
|
7
|
+
fake(@uri, response(described_class.onebox_name))
|
|
7
8
|
end
|
|
8
9
|
|
|
10
|
+
include_context "engines"
|
|
9
11
|
it_behaves_like "an engine"
|
|
10
12
|
|
|
11
13
|
describe "#to_html" do
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
it "has pull request author" do
|
|
14
|
+
it "includes pull request author" do
|
|
15
15
|
expect(html).to include("jamesaanderson")
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
it "
|
|
19
|
-
expect(html).to include("Add audio onebox")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "has repo name" do
|
|
18
|
+
it "includes repository name" do
|
|
23
19
|
expect(html).to include("discourse")
|
|
24
20
|
end
|
|
25
21
|
|
|
26
|
-
it "
|
|
22
|
+
it "includes commit author gravatar" do
|
|
27
23
|
expect(html).to include("b3e9977094ce189bbb493cf7f9adea21")
|
|
28
24
|
end
|
|
29
25
|
|
|
30
|
-
it "
|
|
31
|
-
expect(html).to include("
|
|
26
|
+
it "includes commit time and date" do
|
|
27
|
+
expect(html).to include("02:05AM - 26 Jul 13")
|
|
32
28
|
end
|
|
33
29
|
|
|
34
|
-
it "
|
|
35
|
-
expect(html).to include("2013-07-26T02:05:53Z")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "has number of commits" do
|
|
30
|
+
it "includes number of commits" do
|
|
39
31
|
expect(html).to include("1")
|
|
40
32
|
end
|
|
41
33
|
|
|
42
|
-
it "
|
|
34
|
+
it "includes number of files changed" do
|
|
43
35
|
expect(html).to include("4")
|
|
44
36
|
end
|
|
45
37
|
|
|
46
|
-
it "
|
|
38
|
+
it "includes number of additions" do
|
|
47
39
|
expect(html).to include("19")
|
|
48
40
|
end
|
|
49
41
|
|
|
50
|
-
it "
|
|
42
|
+
it "includes number of deletions" do
|
|
51
43
|
expect(html).to include("1")
|
|
52
44
|
end
|
|
53
|
-
|
|
54
|
-
it "has URL" do
|
|
55
|
-
expect(html).to include(link)
|
|
56
|
-
end
|
|
57
45
|
end
|
|
58
46
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Onebox::Engine::GooglePlayAppOnebox do
|
|
4
|
+
before(:all) do
|
|
5
|
+
@link = "https://play.google.com/store/apps/details?id=com.hulu.plus&hl=en"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
include_context "engines"
|
|
9
|
+
it_behaves_like "an engine"
|
|
10
|
+
|
|
11
|
+
describe "#to_html" do
|
|
12
|
+
it "has developer" do
|
|
13
|
+
expect(html).to include("Hulu")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "has image" do
|
|
17
|
+
expect(html).to include("JH08z41G8hlCw=w300-rw")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "has description" do
|
|
21
|
+
expect(html).to include("Instantly watch current TV shows")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "has price" do
|
|
25
|
+
expect(html).to include("Free")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -2,12 +2,10 @@ require "spec_helper"
|
|
|
2
2
|
|
|
3
3
|
describe Onebox::Engine::HTML do
|
|
4
4
|
before(:all) do
|
|
5
|
-
@link = "http://
|
|
6
|
-
fake(@link, response("
|
|
5
|
+
@link = "http://amazon.com"
|
|
6
|
+
fake(@link, response("amazon"))
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
8
|
+
before(:each) { Onebox.options.cache.clear }
|
|
11
9
|
|
|
12
10
|
describe "#raw" do
|
|
13
11
|
class OneboxEngineHTML
|
|
@@ -20,7 +18,7 @@ describe Onebox::Engine::HTML do
|
|
|
20
18
|
end
|
|
21
19
|
|
|
22
20
|
it "returns a Nokogiri object that has a css method" do
|
|
23
|
-
object = OneboxEngineHTML.new("http://
|
|
21
|
+
object = OneboxEngineHTML.new("http://amazon.com").send(:raw)
|
|
24
22
|
expect(object).to respond_to(:css)
|
|
25
23
|
end
|
|
26
24
|
end
|
|
@@ -2,12 +2,10 @@ require "spec_helper"
|
|
|
2
2
|
|
|
3
3
|
describe Onebox::Engine::JSON do
|
|
4
4
|
before(:all) do
|
|
5
|
-
@link = "http://
|
|
6
|
-
fake(@link, response("
|
|
5
|
+
@link = "http://stackoverflow.com"
|
|
6
|
+
fake(@link, response("stackexchange"))
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
8
|
+
before(:each) { Onebox.options.cache.clear }
|
|
11
9
|
|
|
12
10
|
describe "#raw" do
|
|
13
11
|
class OneboxEngineJSON
|
|
@@ -20,7 +18,7 @@ describe Onebox::Engine::JSON do
|
|
|
20
18
|
end
|
|
21
19
|
|
|
22
20
|
it "returns a hash" do
|
|
23
|
-
object = OneboxEngineJSON.new(
|
|
21
|
+
object = OneboxEngineJSON.new(@link).send(:raw)
|
|
24
22
|
expect(object).to be_a(Hash)
|
|
25
23
|
end
|
|
26
24
|
end
|
|
@@ -3,28 +3,15 @@ require "spec_helper"
|
|
|
3
3
|
describe Onebox::Engine::StackExchangeOnebox do
|
|
4
4
|
before(:all) do
|
|
5
5
|
@link = "http://stackoverflow.com/questions/17992553/concept-behind-these-four-lines-of-tricky-c-code"
|
|
6
|
-
fake(
|
|
6
|
+
fake("http://api.stackexchange.com/2.1/questions/17992553?site=stackoverflow", response(described_class.onebox_name))
|
|
7
7
|
end
|
|
8
|
-
before(:each) { Onebox.defaults.cache.clear }
|
|
9
|
-
|
|
10
|
-
let(:link) { @link }
|
|
11
8
|
|
|
9
|
+
include_context "engines"
|
|
12
10
|
it_behaves_like "an engine"
|
|
13
11
|
|
|
14
12
|
describe "#to_html" do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it "returns the question title" do
|
|
18
|
-
expect(html).to include("Concept behind these 4 lines of tricky C++ code")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "returns the question" do
|
|
22
|
-
expect(html).to include("Why does this code gives output C++Sucks? Can anyone explain the concept behind it?")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "returns the question URL" do
|
|
26
|
-
expect(html).to include(link)
|
|
13
|
+
it "includes question" do
|
|
14
|
+
expect(html).to include("Concept behind these four lines of tricky C++ code")
|
|
27
15
|
end
|
|
28
16
|
end
|
|
29
17
|
end
|
|
30
|
-
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Onebox::Engine::TwitterStatusOnebox do
|
|
4
|
+
before(:all) do
|
|
5
|
+
@link = "https://twitter.com/vyki_e/status/363116819147538433"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
shared_examples_for "#to_html" do
|
|
9
|
+
it "includes tweet" do
|
|
10
|
+
expect(html).to include("I'm a sucker for pledges.")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "includes timestamp" do
|
|
14
|
+
pending
|
|
15
|
+
expect(html).to include("6:59 PM - 1 Aug 13")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "includes username" do
|
|
19
|
+
expect(html).to include("vyki_e")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "includes user avatar" do
|
|
23
|
+
expect(html).to include("39b969d32a10b2437563e246708c8f9d_normal.jpeg")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "includes tweet favorite count" do
|
|
27
|
+
pending
|
|
28
|
+
expect(html).to include("")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "includes retweet count" do
|
|
32
|
+
pending
|
|
33
|
+
expect(html).to include("")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "with html" do
|
|
38
|
+
include_context "engines"
|
|
39
|
+
it_behaves_like "an engine"
|
|
40
|
+
it_behaves_like "#to_html"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context "with twitter client" do
|
|
44
|
+
before(:each) do
|
|
45
|
+
@twitter_client = double("TwitterClient")
|
|
46
|
+
@twitter_client.stub("status") do
|
|
47
|
+
{
|
|
48
|
+
created_at: "Fri Aug 02 01:59:30 +0000 2013",
|
|
49
|
+
id: 363_116_819_147_538_433,
|
|
50
|
+
id_str: "363116819147538433",
|
|
51
|
+
text:
|
|
52
|
+
"I'm a sucker for pledges. @Peers Pledge #sharingeconomy http://t.co/T4Sc47KAzh",
|
|
53
|
+
source:
|
|
54
|
+
"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button</a>",
|
|
55
|
+
user:
|
|
56
|
+
{ id: 1_087_064_150,
|
|
57
|
+
id_str: "1087064150",
|
|
58
|
+
name: "Vyki Englert",
|
|
59
|
+
screen_name: "vyki_e",
|
|
60
|
+
location: "Los Angeles, CA",
|
|
61
|
+
description: "I am woman, hear me #RoR.",
|
|
62
|
+
url: "http://t.co/umZG76wmv2",
|
|
63
|
+
protected: false,
|
|
64
|
+
followers_count: 249,
|
|
65
|
+
friends_count: 907,
|
|
66
|
+
listed_count: 6,
|
|
67
|
+
created_at: "Sun Jan 13 19:53:00 +0000 2013",
|
|
68
|
+
favourites_count: 506,
|
|
69
|
+
statuses_count: 926,
|
|
70
|
+
lang: "en",
|
|
71
|
+
contributors_enabled: false,
|
|
72
|
+
is_translator: false,
|
|
73
|
+
profile_image_url:
|
|
74
|
+
"http://pbs.twimg.com/profile_images/3518892092/39b969d32a10b2437563e246708c8f9d_normal.jpeg",
|
|
75
|
+
profile_image_url_https:
|
|
76
|
+
"https://pbs.twimg.com/profile_images/3518892092/39b969d32a10b2437563e246708c8f9d_normal.jpeg",
|
|
77
|
+
following: true,
|
|
78
|
+
follow_request_sent: false,
|
|
79
|
+
notifications: nil },
|
|
80
|
+
geo: nil,
|
|
81
|
+
coordinates: nil,
|
|
82
|
+
place: nil,
|
|
83
|
+
contributors: nil,
|
|
84
|
+
retweet_count: 0,
|
|
85
|
+
favorite_count: 0,
|
|
86
|
+
favorited: false,
|
|
87
|
+
retweeted: false,
|
|
88
|
+
possibly_sensitive: false,
|
|
89
|
+
lang: "en"
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
Onebox.options = { twitter_client: @twitter_client }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
after(:each) do
|
|
96
|
+
Onebox.options = { twitter_client: nil }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
include_context "engines"
|
|
100
|
+
it_behaves_like "an engine"
|
|
101
|
+
it_behaves_like "#to_html"
|
|
102
|
+
end
|
|
103
|
+
end
|