onebox 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +4 -0
  3. data/.travis.yml +4 -0
  4. data/README.md +154 -113
  5. data/lib/onebox.rb +6 -3
  6. data/lib/onebox/engine.rb +28 -26
  7. data/lib/onebox/engine/amazon_onebox.rb +4 -2
  8. data/lib/onebox/engine/bliptv_onebox.rb +4 -2
  9. data/lib/onebox/engine/clikthrough_onebox.rb +4 -2
  10. data/lib/onebox/engine/college_humor_onebox.rb +3 -2
  11. data/lib/onebox/engine/dailymotion_onebox.rb +4 -2
  12. data/lib/onebox/engine/dotsub_onebox.rb +4 -2
  13. data/lib/onebox/engine/example_onebox.rb +4 -5
  14. data/lib/onebox/engine/flickr_onebox.rb +3 -2
  15. data/lib/onebox/engine/funny_or_die_onebox.rb +4 -2
  16. data/lib/onebox/engine/github_blob_onebox.rb +28 -0
  17. data/lib/onebox/engine/github_commit_onebox.rb +43 -0
  18. data/lib/onebox/engine/github_gist_onebox.rb +33 -0
  19. data/lib/onebox/engine/github_pullrequest_onebox.rb +43 -0
  20. data/lib/onebox/engine/html.rb +1 -1
  21. data/lib/onebox/engine/hulu_onebox.rb +5 -2
  22. data/lib/onebox/engine/imgur_image_onebox.rb +26 -0
  23. data/lib/onebox/engine/itunes_onebox.rb +28 -0
  24. data/lib/onebox/engine/json.rb +11 -0
  25. data/lib/onebox/engine/kinomap_onebox.rb +27 -0
  26. data/lib/onebox/engine/nfb_onebox.rb +5 -2
  27. data/lib/onebox/engine/open_graph.rb +1 -1
  28. data/lib/onebox/engine/qik_onebox.rb +4 -2
  29. data/lib/onebox/engine/revision3_onebox.rb +3 -2
  30. data/lib/onebox/engine/slideshare_onebox.rb +4 -2
  31. data/lib/onebox/engine/sound_cloud_onebox.rb +4 -2
  32. data/lib/onebox/engine/spotify_onebox.rb +27 -0
  33. data/lib/onebox/engine/stack_exchange_onebox.rb +4 -2
  34. data/lib/onebox/engine/ted_onebox.rb +5 -2
  35. data/lib/onebox/engine/twitter_onebox.rb +31 -0
  36. data/lib/onebox/engine/viddler_onebox.rb +5 -3
  37. data/lib/onebox/engine/vimeo_onebox.rb +3 -2
  38. data/lib/onebox/engine/wikipedia_onebox.rb +4 -2
  39. data/lib/onebox/engine/yfrog_onebox.rb +5 -2
  40. data/lib/onebox/version.rb +1 -1
  41. data/lib/onebox/view.rb +21 -0
  42. data/onebox.gemspec +1 -1
  43. data/spec/fixtures/githubblob.response +922 -0
  44. data/spec/fixtures/githubcommit.response +87 -0
  45. data/spec/fixtures/githubgist.response +468 -0
  46. data/spec/fixtures/githubpullrequest.response +216 -0
  47. data/spec/fixtures/imguralbum.response +941 -0
  48. data/spec/fixtures/{imgur.response → imgurimage.response} +870 -890
  49. data/spec/fixtures/itunes.response +402 -0
  50. data/spec/fixtures/{rottentomatoes_fresh.response → rottentomatoesfresh.response} +0 -0
  51. data/spec/fixtures/{rottentomatoes_incomplete.response → rottentomatoesincomplete.response} +0 -0
  52. data/spec/fixtures/{rottentomatoes_rotten.response → rottentomatoesrotten.response} +0 -0
  53. data/spec/fixtures/spotify.response +250 -0
  54. data/spec/fixtures/{wikipedia_redirected.response → wikipediaredirected.response} +0 -0
  55. data/spec/lib/onebox/engine/{amazon_spec.rb → amazon_onebox_spec.rb} +7 -4
  56. data/spec/lib/onebox/engine/{bliptv_spec.rb → bliptv_onebox_spec.rb} +7 -4
  57. data/spec/lib/onebox/engine/{clikthrough_spec.rb → clikthrough_onebox_spec.rb} +7 -4
  58. data/spec/lib/onebox/engine/{college_humor_spec.rb → college_humor_onebox_spec.rb} +7 -4
  59. data/spec/lib/onebox/engine/{dailymotion_spec.rb → dailymotion_onebox_spec.rb} +7 -4
  60. data/spec/lib/onebox/engine/{dotsub_spec.rb → dotsub_onebox_spec.rb} +7 -4
  61. data/spec/lib/onebox/engine/example_onebox_spec.rb +21 -0
  62. data/spec/lib/onebox/engine/{flickr_spec.rb → flickr_onebox_spec.rb} +7 -4
  63. data/spec/lib/onebox/engine/{funny_or_die_spec.rb → funny_or_die_onebox_spec.rb} +7 -4
  64. data/spec/lib/onebox/engine/github_blob_onebox_spec.rb +30 -0
  65. data/spec/lib/onebox/engine/github_commit_onebox_spec.rb +61 -0
  66. data/spec/lib/onebox/engine/github_gist_onebox_spec.rb +29 -0
  67. data/spec/lib/onebox/engine/github_pullrequest_onebox_spec.rb +58 -0
  68. data/spec/lib/onebox/engine/html_spec.rb +27 -0
  69. data/spec/lib/onebox/engine/{hulu_spec.rb → hulu_onebox_spec.rb} +7 -4
  70. data/spec/lib/onebox/engine/imgur_image_onebox_spec.rb +29 -0
  71. data/spec/lib/onebox/engine/itunes_onebox_spec.rb +29 -0
  72. data/spec/lib/onebox/engine/json_spec.rb +27 -0
  73. data/spec/lib/onebox/engine/kinomap_onebox_spec.rb +37 -0
  74. data/spec/lib/onebox/engine/{nfb_spec.rb → nfb_onebox_spec.rb} +7 -4
  75. data/spec/lib/onebox/engine/open_graph_spec.rb +27 -0
  76. data/spec/lib/onebox/engine/{qik_spec.rb → qik_onebox_spec.rb} +7 -4
  77. data/spec/lib/onebox/engine/{revision3_spec.rb → revision3_onebox_spec.rb} +7 -4
  78. data/spec/lib/onebox/engine/{slideshare_spec.rb → slideshare_onebox_spec.rb} +7 -4
  79. data/spec/lib/onebox/engine/{sound_cloud_spec.rb → sound_cloud_onebox_spec.rb} +7 -4
  80. data/spec/lib/onebox/engine/spotify_onebox_spec.rb +36 -0
  81. data/spec/lib/onebox/engine/{stack_exchange_spec.rb → stack_exchange_onebox_spec.rb} +7 -4
  82. data/spec/lib/onebox/engine/{ted_spec.rb → ted_onebox_spec.rb} +7 -4
  83. data/spec/lib/onebox/engine/twitter_onebox_spec.rb +47 -0
  84. data/spec/lib/onebox/engine/{viddler_spec.rb → viddler_onebox_spec.rb} +7 -4
  85. data/spec/lib/onebox/engine/{vimeo_spec.rb → vimeo_onebox_spec.rb} +7 -4
  86. data/spec/lib/onebox/engine/{wikipedia_spec.rb → wikipedia_onebox_spec.rb} +7 -4
  87. data/spec/lib/onebox/engine/{yfrog_spec.rb → yfrog_onebox_spec.rb} +7 -4
  88. data/spec/lib/onebox/engine_spec.rb +38 -27
  89. data/spec/lib/onebox/preview_spec.rb +3 -1
  90. data/spec/lib/onebox/view_spec.rb +16 -0
  91. data/spec/lib/onebox_spec.rb +1 -1
  92. data/spec/spec_helper.rb +8 -3
  93. data/spec/support/html_spec_helper.rb +1 -1
  94. data/templates/_layout.mustache +4 -0
  95. data/templates/amazon.mustache +5 -0
  96. data/templates/bliptv.mustache +5 -0
  97. data/templates/clikthrough.mustache +4 -0
  98. data/templates/collegehumor.mustache +5 -0
  99. data/templates/dailymotion.mustache +5 -0
  100. data/templates/dotsub.mustache +5 -0
  101. data/templates/example.mustache +2 -0
  102. data/templates/flickr.mustache +4 -0
  103. data/templates/funnyordie.mustache +6 -0
  104. data/templates/githubblob.mustache +5 -0
  105. data/templates/githubcommit.mustache +11 -0
  106. data/templates/githubgist.mustache +3 -0
  107. data/templates/githubpullrequest.mustache +14 -0
  108. data/templates/hulu.mustache +6 -0
  109. data/templates/imgurimage.mustache +3 -0
  110. data/templates/itunes.mustache +4 -0
  111. data/templates/kinomap.mustache +5 -0
  112. data/templates/nfb.mustache +5 -0
  113. data/templates/qik.mustache +4 -0
  114. data/templates/revision3.mustache +5 -0
  115. data/templates/slideshare.mustache +4 -0
  116. data/templates/soundcloud.mustache +5 -0
  117. data/templates/spotify.mustache +4 -0
  118. data/templates/stackexchange.mustache +3 -0
  119. data/templates/ted.mustache +5 -0
  120. data/templates/twitter.mustache +7 -0
  121. data/templates/viddler.mustache +5 -0
  122. data/templates/vimeo.mustache +5 -0
  123. data/templates/wikipedia.mustache +4 -0
  124. data/templates/yfrog.mustache +4 -0
  125. metadata +139 -90
  126. data/spec/fixtures/apple.response +0 -391
  127. data/spec/fixtures/clickthrough.response +0 -1472
  128. data/spec/fixtures/gist.response +0 -282
  129. data/spec/fixtures/github_blob.response +0 -706
  130. data/spec/fixtures/github_commit.response +0 -881
  131. data/spec/fixtures/github_pullrequest.response +0 -1619
  132. data/spec/lib/onebox/engine/example_spec.rb +0 -18
  133. data/templates/amazon.handlebars +0 -9
  134. data/templates/bliptv.handlebars +0 -10
  135. data/templates/clickthrough.handlebars +0 -8
  136. data/templates/clikthrough.handlebars +0 -8
  137. data/templates/collegehumor.handlebars +0 -9
  138. data/templates/dailymotion.handlebars +0 -9
  139. data/templates/dotsub.handlebars +0 -9
  140. data/templates/flickr.handlebars +0 -8
  141. data/templates/funnyordie.handlebars +0 -9
  142. data/templates/hulu.handlebars +0 -9
  143. data/templates/nfb.handlebars +0 -8
  144. data/templates/qik.handlebars +0 -7
  145. data/templates/revision3.handlebars +0 -9
  146. data/templates/slideshare.handlebars +0 -8
  147. data/templates/soundcloud.handlebars +0 -9
  148. data/templates/stackexchange.handlebars +0 -7
  149. data/templates/ted.handlebars +0 -8
  150. data/templates/viddler.handlebars +0 -9
  151. data/templates/vimeo.handlebars +0 -9
  152. data/templates/wikipedia.handlebars +0 -8
  153. data/templates/yfrog.handlebars +0 -8
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::ItunesOnebox do
4
+ before(:all) do
5
+ @link = "https://itunes.apple.com/us/app/minecraft-pocket-edition/id479516143?mt=8"
6
+ fake(@link, response("itunes"))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
13
+
14
+ describe "#to_html" do
15
+ let(:html) { described_class.new(link).to_html }
16
+
17
+ it "returns the product title" do
18
+ expect(html).to include("Minecraft – Pocket Edition")
19
+ end
20
+
21
+ it "returns the product image" do
22
+ expect(html).to include("bxerxqln.png")
23
+ end
24
+
25
+ it "returns the product description" do
26
+ expect(html).to include("Get Minecraft – Pocket Edition on the App Store.")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::JSON do
4
+ before(:all) do
5
+ @link = "http://gist.github.com"
6
+ fake(@link, response("githubgist"))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ describe "#raw" do
13
+ class OneboxEngineJSON
14
+ include Onebox::Engine
15
+ include Onebox::Engine::JSON
16
+
17
+ def initialize(link)
18
+ @url = link
19
+ end
20
+ end
21
+
22
+ it "returns a hash" do
23
+ object = OneboxEngineJSON.new("http://gist.github.com").send(:raw)
24
+ expect(object).to be_a(Hash)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,37 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::KinomapOnebox do
4
+ before(:all) do
5
+ @link = "http://www.kinomap.com/watch/52wjcu"
6
+ fake(@link, response(described_class.template_name))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
13
+
14
+ describe "#to_html" do
15
+ let(:html) { described_class.new(link).to_html }
16
+
17
+ it "returns video title" do
18
+ expect(html).to include("Enduro Jeunes Touquet - Nicolas Letévé")
19
+ end
20
+
21
+ it "returns video photo" do
22
+ expect(html).to include("52wjcu_320x240.jpg")
23
+ end
24
+
25
+ it "returns video description" do
26
+ expect(html).to include("A partir du parc moto,")
27
+ end
28
+
29
+ it "returns video URL" do
30
+ expect(html).to include("http://v2.kinomap.com/embed/52wjcu")
31
+ end
32
+
33
+ it "returns URL" do
34
+ expect(html).to include(link)
35
+ end
36
+ end
37
+ end
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::NFBOnebox do
4
- let(:link) { "http://nfb.ca" }
5
- before do
6
- fake(link, response("nfb.response"))
4
+ before(:all) do
5
+ @link = "http://www.nfb.ca/film/overdose"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::OpenGraph do
4
+ before(:all) do
5
+ @link = "http://flickr.com"
6
+ fake(@link, response("flickr"))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ describe "#raw" do
13
+ class OneboxEngineOpenGraph
14
+ include Onebox::Engine
15
+ include Onebox::Engine::OpenGraph
16
+
17
+ def initialize(link)
18
+ @url = link
19
+ end
20
+ end
21
+
22
+ it "returns a OpenGraph object that has a metadata method" do
23
+ object = OneboxEngineOpenGraph.new("http://flickr.com").send(:raw)
24
+ expect(object).to respond_to(:metadata)
25
+ end
26
+ end
27
+ end
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::QikOnebox do
4
- let(:link) { "http://qik.com" }
5
- before do
6
- fake(link, response("qik.response"))
4
+ before(:all) do
5
+ @link = "http://qik.com/video/13430626"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::Revision3Onebox do
4
- let(:link) { "http://revision3.com" }
5
- before do
6
- fake(link, response("revision3.response"))
4
+ before(:all) do
5
+ @link = "http://revision3.com/discoverysharks/blue-sharks"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::SlideshareOnebox do
4
- let(:link) { "http://slideshare.net" }
5
- before do
6
- fake(link, response("slideshare.response"))
4
+ before(:all) do
5
+ @link = "http://www.slideshare.net/TravelWorldPassport/12-local-traditions"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::SoundCloudOnebox do
4
- let(:link) { "http://soundcloud.com" }
5
- before do
6
- fake(link, response("soundcloud.response"))
4
+ before(:all) do
5
+ @link = "https://soundcloud.com/rac/penguin-prison-worse-it-gets-rac-mix"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::SpotifyOnebox do
4
+ before(:all) do
5
+ @link = "http://open.spotify.com/album/3eEtlM70GU40OyHMotY15N"
6
+ fake(@link, response(described_class.template_name))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
13
+
14
+ describe "#to_html" do
15
+ let(:html) { described_class.new(link).to_html }
16
+
17
+ it "returns album title" do
18
+ title = "Keep Moving Forward EP"
19
+ expect(html).to include(title)
20
+ end
21
+
22
+ it "returns album description" do
23
+ description = "Keep Moving Forward EP, an album by Bubble on Spotify"
24
+ expect(html).to include(description)
25
+ end
26
+
27
+ it "returns album image" do
28
+ image = "http://o.scdn.co/image/d2c3de070317af4aae4e03daa976690431f1849d"
29
+ expect(html).to include(image)
30
+ end
31
+
32
+ it "returns URL" do
33
+ expect(html).to include(link)
34
+ end
35
+ end
36
+ end
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::StackExchangeOnebox do
4
- let(:link) { "http://stackexchange.com" }
5
- before do
6
- fake(link, response("stackexchange.response"))
4
+ before(:all) do
5
+ @link = "http://stackoverflow.com/questions/17992553/concept-behind-these-four-lines-of-tricky-c-code"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::TedOnebox do
4
- let(:link) { "http://ted.com" }
5
- before do
6
- fake(link, response("ted.response"))
4
+ before(:all) do
5
+ @link = "http://www.ted.com/talks/eli_beer_the_fastest_ambulance_a_motorcycle.html"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::TwitterOnebox do
4
+ before(:all) do
5
+ @link = "https://twitter.com/toastergrrl/status/363116819147538433"
6
+ fake(@link, response(described_class.template_name))
7
+ end
8
+ before(:each) { Onebox.defaults.cache.clear }
9
+
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
13
+
14
+ describe "#to_html" do
15
+ let(:html) { described_class.new(link).to_html }
16
+
17
+ it "has tweet text" do
18
+ expect(html).to include("I'm a sucker for pledges.")
19
+ end
20
+
21
+ it "has tweet time and date" do
22
+ expect(html).to include("6:59 PM - 1 Aug 13")
23
+ end
24
+
25
+ it "has user name" do
26
+ expect(html).to include("@toastergrrl")
27
+ end
28
+
29
+ it "has user avatar" do
30
+ expect(html).to include("39b969d32a10b2437563e246708c8f9d_normal.jpeg")
31
+ end
32
+
33
+ it "has tweet favorite count" do
34
+ pending
35
+ expect(html).to include("")
36
+ end
37
+
38
+ it "has retweet count" do
39
+ pending
40
+ expect(html).to include("")
41
+ end
42
+
43
+ it "has URL" do
44
+ expect(html).to include(link)
45
+ end
46
+ end
47
+ end
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::ViddlerOnebox do
4
- let(:link) { "http://viddler.com" }
5
- before do
6
- fake(link, response("viddler.response"))
4
+ before(:all) do
5
+ @link = "http://www.viddler.com/v/7164f749"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::VimeoOnebox do
4
- let(:link) { "http://vimeo.com" }
5
- before do
6
- fake(link, response("vimeo.response"))
4
+ before(:all) do
5
+ @link = "http://vimeo.com/70437049"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::WikipediaOnebox do
4
- let(:link) { "http://wikipedia.com" }
5
- before do
6
- fake(link, response("wikipedia.response"))
4
+ before(:all) do
5
+ @link = "http://en.wikipedia.org/wiki/Kevin_Bacon"
6
+ fake(@link, response(described_class.template_name))
7
7
  end
8
+ before(:each) { Onebox.defaults.cache.clear }
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -1,12 +1,15 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Onebox::Engine::YfrogOnebox do
4
- let(:link) { "http://yfrog.com" }
5
- before do
6
- fake(link, response("yfrog.response"))
4
+ before(:each) { Onebox.defaults.cache.clear }
5
+ before(:all) do
6
+ @link = "http://twitter.yfrog.com/h0jjdobj?sa=0"
7
+ fake(@link, response(described_class.template_name))
7
8
  end
8
9
 
9
- it_behaves_like "engines"
10
+ let(:link) { @link }
11
+
12
+ it_behaves_like "an engine"
10
13
 
11
14
  describe "#to_html" do
12
15
  let(:html) { described_class.new(link).to_html }
@@ -11,8 +11,10 @@ class OneboxEngineExample
11
11
  { key: "value" }
12
12
  end
13
13
 
14
- def template
15
- %|<div class="onebox"><a href="{{url}}"></a></div>|
14
+ def view
15
+ @view.tap do |layout|
16
+ layout.view.template = %|<div class="onebox"><a href="{{url}}"></a></div>|
17
+ end
16
18
  end
17
19
  end
18
20
 
@@ -30,7 +32,7 @@ describe Onebox::Engine do
30
32
  end
31
33
 
32
34
  describe "#record" do
33
- class OneboxEngineBar
35
+ class OneboxEngineRecord
34
36
  include Onebox::Engine
35
37
 
36
38
  def data
@@ -40,49 +42,58 @@ describe Onebox::Engine do
40
42
 
41
43
  it "returns cached value for given url if its url is already in cache" do
42
44
  cache = { "http://example.com" => "old content" }
43
- result = OneboxEngineBar.new("http://example.com", cache).send(:record)
45
+ result = OneboxEngineRecord.new("http://example.com", cache).send(:record)
44
46
  expect(result).to eq("old content")
45
47
  end
46
48
 
47
49
  it "stores cache value for given url if cache key doesn't exist" do
48
50
  cache = { "http://example.com1" => "old content" }
49
- result = OneboxEngineBar.new("http://example.com", cache).send(:record)
51
+ result = OneboxEngineRecord.new("http://example.com", cache).send(:record)
50
52
  expect(result).to eq("new content")
51
53
  end
52
54
  end
53
55
 
54
- describe "#template_path" do
55
- it "returns file path for onebox template" do
56
- class OneboxEngineVoo
57
- include Onebox::Engine
58
- end
59
- result = OneboxEngineVoo.new("http://amazon.com").send(:template_path)
60
- expect(result).to eq("/home/jzeta/Projects/rgsoc/onebox/templates/enginevoo.handlebars")
61
- end
62
- end
63
-
64
56
  describe ".===" do
57
+ class OneboxEngineTripleEqual
58
+ include Onebox::Engine
59
+ @@matcher = /example/
60
+ end
65
61
  it "returns true if argument matches the matcher" do
66
- class OneboxEngineFoo
67
- include Onebox::Engine
68
- @@matcher = /example/
69
- end
70
- result = OneboxEngineFoo === "http://www.example.com/product/5?var=foo&bar=5"
62
+ result = OneboxEngineTripleEqual === "http://www.example.com/product/5?var=foo&bar=5"
71
63
  expect(result).to eq(true)
72
64
  end
73
65
  end
74
66
 
75
67
  describe ".matches" do
68
+ class OneboxEngineMatches
69
+ include Onebox::Engine
70
+
71
+ matches do
72
+ find "foo.com"
73
+ end
74
+ end
75
+
76
76
  it "sets @@matcher to a regular expression" do
77
- class OneboxEngineFar
78
- include Onebox::Engine
77
+ regex = OneboxEngineMatches.class_variable_get(:@@matcher)
78
+ expect(regex).to be_a(Regexp)
79
+ end
80
+ end
79
81
 
80
- matches do
81
- find "foo.com"
82
- end
82
+ describe ".template_name" do
83
+ module ScopeForTemplateName
84
+ class TemplateNameOnebox
85
+ include Onebox::Engine
83
86
  end
84
- regex = OneboxEngineFar.class_variable_get(:@@matcher)
85
- expect(regex).to eq(/(?:foo\.com)/i)
87
+ end
88
+
89
+ let(:template_name) { ScopeForTemplateName::TemplateNameOnebox.template_name }
90
+
91
+ it "should not include the scope" do
92
+ expect(template_name).not_to include("ScopeForTemplateName", "scopefortemplatename")
93
+ end
94
+
95
+ it "should not include the word Onebox" do
96
+ expect(template_name).not_to include("onebox", "Onebox")
86
97
  end
87
98
  end
88
99
  end