onebox 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|