onebox 1.8.39 → 1.8.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +0 -1
  4. data/README.md +1 -1
  5. data/lib/onebox/engine/amazon_onebox.rb +98 -17
  6. data/lib/onebox/version.rb +3 -1
  7. data/onebox.gemspec +5 -5
  8. data/templates/amazon.mustache +7 -1
  9. metadata +7 -177
  10. data/spec/fixtures/amazon-og.response +0 -3675
  11. data/spec/fixtures/amazon.response +0 -3040
  12. data/spec/fixtures/cloudapp-gif.response +0 -66
  13. data/spec/fixtures/cloudapp-jpg.response +0 -66
  14. data/spec/fixtures/cloudapp-mp4.response +0 -65
  15. data/spec/fixtures/cloudapp-others.response +0 -66
  16. data/spec/fixtures/dailymail.response +0 -5914
  17. data/spec/fixtures/discourse_topic.response +0 -344
  18. data/spec/fixtures/discourse_topic_reply.response +0 -345
  19. data/spec/fixtures/douban.response +0 -4399
  20. data/spec/fixtures/etsy.response +0 -5827
  21. data/spec/fixtures/etsy_mobile.response +0 -4230
  22. data/spec/fixtures/gfycat.response +0 -1
  23. data/spec/fixtures/githubblob.response +0 -46
  24. data/spec/fixtures/githubcommit.response +0 -87
  25. data/spec/fixtures/githubgist.response +0 -310
  26. data/spec/fixtures/githubpullrequest.response +0 -216
  27. data/spec/fixtures/googleplayapp.response +0 -138
  28. data/spec/fixtures/image.response +0 -0
  29. data/spec/fixtures/meetup.response.html +0 -4419
  30. data/spec/fixtures/meetup_oembed.response +0 -1
  31. data/spec/fixtures/pubmed-electronic-xml.response +0 -175
  32. data/spec/fixtures/pubmed-electronic.response +0 -307
  33. data/spec/fixtures/pubmed-xml.response +0 -122
  34. data/spec/fixtures/pubmed.response +0 -300
  35. data/spec/fixtures/slides.response +0 -2852
  36. data/spec/fixtures/stackexchange-answer.response +0 -1
  37. data/spec/fixtures/stackexchange-question.response +0 -1
  38. data/spec/fixtures/twitterstatus.response +0 -2814
  39. data/spec/fixtures/video.response +0 -0
  40. data/spec/fixtures/wechat-mp.response +0 -631
  41. data/spec/fixtures/wikimedia.response +0 -1
  42. data/spec/fixtures/wikipedia.response +0 -566
  43. data/spec/fixtures/wikipediaredirected.response +0 -899
  44. data/spec/fixtures/xkcd.response +0 -1
  45. data/spec/fixtures/youku-meta.response +0 -1
  46. data/spec/fixtures/youku.response +0 -1443
  47. data/spec/fixtures/youtube-channel.response +0 -5446
  48. data/spec/fixtures/youtube-json.response +0 -1
  49. data/spec/fixtures/youtube-list-json.response +0 -1
  50. data/spec/fixtures/youtube.response +0 -1625
  51. data/spec/lib/onebox/engine/amazon_onebox_spec.rb +0 -116
  52. data/spec/lib/onebox/engine/audio_onebox_spec.rb +0 -31
  53. data/spec/lib/onebox/engine/cloudapp_onebox_spec.rb +0 -26
  54. data/spec/lib/onebox/engine/douban_onebox_spec.rb +0 -29
  55. data/spec/lib/onebox/engine/gfycat_onebox_spec.rb +0 -34
  56. data/spec/lib/onebox/engine/github_blob_onebox_spec.rb +0 -21
  57. data/spec/lib/onebox/engine/github_commit_onebox_spec.rb +0 -108
  58. data/spec/lib/onebox/engine/github_gist_onebox_spec.rb +0 -67
  59. data/spec/lib/onebox/engine/github_pullrequest_onebox_spec.rb +0 -46
  60. data/spec/lib/onebox/engine/google_docs_onebox_spec.rb +0 -35
  61. data/spec/lib/onebox/engine/google_maps_onebox_spec.rb +0 -72
  62. data/spec/lib/onebox/engine/google_play_app_onebox_spec.rb +0 -28
  63. data/spec/lib/onebox/engine/html_spec.rb +0 -25
  64. data/spec/lib/onebox/engine/image_onebox_spec.rb +0 -39
  65. data/spec/lib/onebox/engine/json_spec.rb +0 -25
  66. data/spec/lib/onebox/engine/pdf_onebox_spec.rb +0 -28
  67. data/spec/lib/onebox/engine/pubmed_onebox_spec.rb +0 -78
  68. data/spec/lib/onebox/engine/slides_onebox_spec.rb +0 -24
  69. data/spec/lib/onebox/engine/stack_exchange_onebox_spec.rb +0 -97
  70. data/spec/lib/onebox/engine/trello_onebox_spec.rb +0 -30
  71. data/spec/lib/onebox/engine/twitch_clips_onebox_spec.rb +0 -10
  72. data/spec/lib/onebox/engine/twitch_stream_onebox_spec.rb +0 -15
  73. data/spec/lib/onebox/engine/twitch_video_onebox_spec.rb +0 -10
  74. data/spec/lib/onebox/engine/twitter_status_onebox_spec.rb +0 -187
  75. data/spec/lib/onebox/engine/video_onebox_spec.rb +0 -31
  76. data/spec/lib/onebox/engine/wechat_mp_onebox_spec.rb +0 -26
  77. data/spec/lib/onebox/engine/whitelisted_generic_onebox_spec.rb +0 -179
  78. data/spec/lib/onebox/engine/wikimedia_onebox_spec.rb +0 -23
  79. data/spec/lib/onebox/engine/wikipedia_onebox_spec.rb +0 -21
  80. data/spec/lib/onebox/engine/xkcd_spec.rb +0 -27
  81. data/spec/lib/onebox/engine/youku_onebox_spec.rb +0 -13
  82. data/spec/lib/onebox/engine/youtube_onebox_spec.rb +0 -84
  83. data/spec/lib/onebox/engine_spec.rb +0 -101
  84. data/spec/lib/onebox/helpers_spec.rb +0 -73
  85. data/spec/lib/onebox/layout_spec.rb +0 -79
  86. data/spec/lib/onebox/matcher_spec.rb +0 -74
  87. data/spec/lib/onebox/preview_spec.rb +0 -74
  88. data/spec/lib/onebox/status_check_spec.rb +0 -68
  89. data/spec/lib/onebox_spec.rb +0 -65
  90. data/spec/spec_helper.rb +0 -90
  91. data/spec/support/html_spec_helper.rb +0 -18
  92. data/web/assets/javascripts/jquery.js +0 -4
  93. data/web/assets/javascripts/main.js +0 -23
  94. data/web/assets/stylesheets/normalize.css +0 -427
  95. data/web/assets/stylesheets/style.css +0 -25
  96. data/web/views/index.haml +0 -29
  97. data/web/views/layout.haml +0 -11
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::GoogleDocsOnebox do
4
- context "Spreadsheets" do
5
- let(:matcher) { described_class.new("https://docs.google.com/spreadsheets/d/SHEET_KEY/pubhtml") }
6
-
7
- it "should be a spreadsheet" do
8
- expect(matcher.send(:shorttype)).to eq (:sheets)
9
- end
10
- end
11
-
12
- context "Documents" do
13
- let(:matcher) { described_class.new("https://docs.google.com/document/d/DOC_KEY/pub") }
14
-
15
- it "should be a document" do
16
- expect(matcher.send(:shorttype)).to eq (:docs)
17
- end
18
- end
19
-
20
- context "Presentaions" do
21
- let(:matcher) { described_class.new("https://docs.google.com/presentation/d/PRESENTATION_KEY/pub") }
22
-
23
- it "should be a presentation" do
24
- expect(matcher.send(:shorttype)).to eq (:slides)
25
- end
26
- end
27
-
28
- context "Forms" do
29
- let(:matcher) { described_class.new("https://docs.google.com/forms/d/FORMS_KEY/viewform") }
30
-
31
- it "should be a form" do
32
- expect(matcher.send(:shorttype)).to eq (:forms)
33
- end
34
- end
35
- end
@@ -1,72 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::GoogleMapsOnebox do
4
-
5
- URLS = {
6
- short: {
7
- test: "https://goo.gl/maps/rEG3D",
8
- redirect: ["302 Found", :long],
9
- expect: "https://maps.google.de/maps?sll=40.689249,-74.0445&sspn=0.0062479,0.0109864&cid=4667599994556318251&q=Statue+of+Liberty+National+Monument&output=embed&dg=ntvb&ll=40.689249,-74.0445&spn=0.0062479,0.0109864",
10
- },
11
- long: {
12
- test: "https://www.google.de/maps/place/Statue+of+Liberty+National+Monument/@40.689249,-74.0445,17z/data=!3m1!4b1!4m2!3m1!1s0x89c25090129c363d:0x40c6a5770d25022b",
13
- redirect: ["301 Moved Permanently", :canonical],
14
- expect: "https://maps.google.de/maps?sll=40.689249,-74.0445&sspn=0.0062479,0.0109864&cid=4667599994556318251&q=Statue+of+Liberty+National+Monument&output=embed&dg=ntvb&ll=40.689249,-74.0445&spn=0.0062479,0.0109864",
15
- },
16
- canonical: {
17
- test: "https://maps.google.de/maps?sll=40.689249,-74.0445&sspn=0.0062479,0.0109864&cid=4667599994556318251&q=Statue+of+Liberty+National+Monument&output=classic&dg=ntvb",
18
- expect: "https://maps.google.de/maps?sll=40.689249,-74.0445&sspn=0.0062479,0.0109864&cid=4667599994556318251&q=Statue+of+Liberty+National+Monument&output=embed&dg=ntvb&ll=40.689249,-74.0445&spn=0.0062479,0.0109864",
19
- },
20
- custom: {
21
- test: "https://www.google.com/maps/d/edit?mid=zPYyZFrHi1MU.kX85W_Y2y2_E",
22
- expect: "https://www.google.com/maps/d/embed?mid=zPYyZFrHi1MU.kX85W_Y2y2_E",
23
- },
24
- streetview: {
25
- test: "https://www.google.com/maps/@46.414384,10.013947,3a,75y,232.83h,99.08t/data=!3m5!1e1!3m3!1s9WgYUb5quXDjqqFd3DWI6A!2e0!3e5?hl=de",
26
- expect: "https://www.google.com/maps/embed?pb=!3m2!2sen!4v0!6m8!1m7!1s9WgYUb5quXDjqqFd3DWI6A!2m2!1d46.414384!2d10.013947!3f232.83!4f9.908!5f0.75",
27
- streetview: true
28
- },
29
- unresolveable: {
30
- test: "https://www.google.com/maps/place/Den+Abattoir/@51.2285173,4.4336702,17z/data=!4m7!1m4!3m3!1s0x47c3f7a5ac48e237:0x63d716018f584a33!2zUGnDqXRyYWlu!3b1!3m1!1s0x0000000000000000:0xfbfac0c41c32471a",
31
- redirect: ["302 Found", "https://www.google.com/maps/place/Den+Abattoir/@51.2285173,4.4336702,17z/data=!4m7!1m4!3m3!1s0x47c3f7a5ac48e237:0x63d716018f584a33!2zUGnDqXRyYWlu!3b1!3m1!1s0x0000000000000000:0xfbfac0c41c32471a?dg=dbrw&newdg=1"],
32
- expect: "https://maps.google.com/maps?ll=51.2285173,4.4336702&z=17&output=embed&dg=ntvb&q=Den+Abattoir&cid=18157036796216755994"
33
- },
34
- satellite: {
35
- test: "https://www.google.de/maps/@40.6894264,-74.0449146,758m/data=!3m1!1e3",
36
- redirect: ["302 Found", "https://www.google.de/maps/@40.6894264,-74.0449146,758m/data=!3m1!1e3?dg=dbrw&newdg=1"],
37
- expect: "https://maps.google.com/maps?ll=40.6894264,-74.0449146&z=16&output=embed&dg=ntvb"
38
- }
39
- }
40
-
41
- # Register URL redirects
42
- before(:all) do
43
- URLS.values.each do |t|
44
- status, location = *t[:redirect]
45
- location = URLS[location][:test] if location.is_a? Symbol
46
- FakeWeb.register_uri(:head, t[:test], response: "HTTP/1.1 #{status}\nLocation: #{location}\n\n")
47
- end
48
- end
49
-
50
- # Prevent sleep from wasting our time when we test with strange redirects
51
- subject do
52
- described_class.send(:allocate).tap do |obj|
53
- allow(obj).to receive(:sleep)
54
- obj.send(:initialize, link)
55
- end
56
- end
57
-
58
- let(:data) { Onebox::Helpers.symbolize_keys(subject.send(:data)) }
59
- let(:link) { |example| URLS[example.metadata[:urltype] || :short][:test] }
60
-
61
- include_context "an engine", urltype: :short
62
-
63
- URLS.each do |kind, t|
64
- it "processes #{kind.to_s} url correctly", urltype: kind do
65
- expect(subject.url).to eq t[:expect]
66
- expect(subject.streetview?).to t[:streetview] ? be_truthy : be_falsey
67
- expect(subject.to_html).to include("<iframe")
68
- expect(subject.placeholder_html).to include("<img")
69
- end
70
- end
71
-
72
- end
@@ -1,28 +0,0 @@
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
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::HTML do
4
- before(:all) do
5
- @link = "http://amazon.com"
6
- fake(@link, response("amazon"))
7
- end
8
- before(:each) { Onebox.options.cache.clear }
9
-
10
- describe "#raw" do
11
- class OneboxEngineHTML
12
- include Onebox::Engine
13
- include Onebox::Engine::HTML
14
-
15
- def initialize(link)
16
- @url = link
17
- end
18
- end
19
-
20
- it "returns a Nokogiri object that has a css method" do
21
- object = OneboxEngineHTML.new("http://amazon.com").send(:raw)
22
- expect(object).to respond_to(:css)
23
- end
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::ImageOnebox do
4
- it "supports png" do
5
- expect(Onebox.preview('http://www.discourse.org/images/logo.png').to_s).to match(/<img/)
6
- end
7
-
8
- it "supports jpg" do
9
- expect(Onebox.preview('http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg').to_s).to match(/<img/)
10
- end
11
-
12
- it "supports jpeg" do
13
- expect(Onebox.preview('http://upload.wikimedia.org/wikipedia/en/b/bb/Poster.jpeg').to_s).to match(/<img/)
14
- end
15
-
16
- it "supports gif" do
17
- expect(Onebox.preview('http://upload.wikimedia.org/wikipedia/commons/5/55/Tesseract.gif').to_s).to match(/<img/)
18
- end
19
-
20
- it "supports tif" do
21
- expect(Onebox.preview('http://www.fileformat.info/format/tiff/sample/1f37bbd5603048178487ec88b1a6425b/MARBLES.tif').to_s).to match(/<img/)
22
- end
23
-
24
- it "supports bmp" do
25
- expect(Onebox.preview('http://www.fileformat.info/format/bmp/sample/d4202a5fc22a48c388d9e1c636792cc6/LAND.BMP').to_s).to match(/<img/)
26
- end
27
-
28
- it "supports image URLs with query parameters" do
29
- expect(Onebox.preview('https://www.google.com/logos/doodles/2014/percy-julians-115th-birthday-born-1899-5688801926053888-hp.jpg?foo=bar').to_s).to match(/<img/)
30
- end
31
-
32
- it "supports protocol relative image URLs" do
33
- expect(Onebox.preview('//www.google.com/logos/doodles/2014/percy-julians-115th-birthday-born-1899-5688801926053888-hp.jpg').to_s).to match(/<img/)
34
- end
35
-
36
- it "includes a direct link to the image" do
37
- expect(Onebox.preview('http://www.discourse.org/images/logo.png').to_s).to match(/<a.*png/)
38
- end
39
- end
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::JSON do
4
- before(:all) do
5
- @link = "http://stackoverflow.com"
6
- fake(@link, response("stackexchange-question"))
7
- end
8
- before(:each) { Onebox.options.cache.clear }
9
-
10
- describe "#raw" do
11
- class OneboxEngineJSON
12
- include Onebox::Engine
13
- include Onebox::Engine::JSON
14
-
15
- def initialize(link)
16
- @url = link
17
- end
18
- end
19
-
20
- it "returns a hash" do
21
- object = OneboxEngineJSON.new(@link).send(:raw)
22
- expect(object).to be_a(Hash)
23
- end
24
- end
25
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::PdfOnebox do
4
- let(:link) { "https://acrobatusers.com/assets/uploads/public_downloads/2217/adobe-acrobat-xi-merge-pdf-files-tutorial-ue.pdf" }
5
- let(:html) { described_class.new(link).to_html }
6
-
7
- let(:no_content_length_link) { "https://dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/14294/3/greiffenhagen-ca_and_consumption.pdf" }
8
- let(:no_filesize_html) { described_class.new(no_content_length_link).to_html }
9
-
10
- before do
11
- FakeWeb.register_uri(:head, link, content_length: "335562")
12
- FakeWeb.register_uri(:head, no_content_length_link, content_length: nil)
13
- end
14
-
15
- describe "#to_html" do
16
- it "includes filename" do
17
- expect(html).to include("adobe-acrobat-xi-merge-pdf-files-tutorial-ue.pdf")
18
- end
19
-
20
- it "includes filesize" do
21
- expect(html).to include("327.70 KB")
22
- end
23
-
24
- it "doesn’t include filesize when unknown" do
25
- expect(no_filesize_html).to_not include("<p class='filesize'>")
26
- end
27
- end
28
- end
@@ -1,78 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::PubmedOnebox do
4
-
5
- let(:link) { "http://www.ncbi.nlm.nih.gov/pubmed/7288891" }
6
- let(:xml_link) { "http://www.ncbi.nlm.nih.gov/pubmed/7288891?report=xml&format=text" }
7
- let(:html) { described_class.new(link).to_html }
8
-
9
- before do
10
- fake(link, response("pubmed"))
11
- fake(xml_link, response("pubmed-xml"))
12
- end
13
-
14
- it "has the paper's title" do
15
- expect(html).to include("Evolutionary trees from DNA sequences: a maximum likelihood approach.")
16
- end
17
-
18
- it "has the paper's author" do
19
- expect(html).to include("Felsenstein")
20
- end
21
-
22
- it "has the paper's abstract" do
23
- expect(html).to include("The application of maximum likelihood techniques to the estimation of evolutionary trees from nucleic acid sequence data is discussed.") end
24
-
25
- it "has the paper's date" do
26
- expect(html).to include("1981")
27
- end
28
-
29
- it "has the URL to the resource" do
30
- expect(html).to include(link)
31
- end
32
-
33
- context "Pubmed electronic print" do
34
- let(:link) { "http://www.ncbi.nlm.nih.gov/pubmed/24737116" }
35
- let(:xml_link) { "http://www.ncbi.nlm.nih.gov/pubmed/24737116?report=xml&format=text" }
36
- let(:html) { described_class.new(link).to_html }
37
-
38
- before do
39
- fake(link, response("pubmed-electronic"))
40
- fake(xml_link, response("pubmed-electronic-xml"))
41
- end
42
-
43
- it "has the paper's title" do
44
- expect(html).to include("Cushingoid facies on (18)F-FDG PET/CT.")
45
- end
46
-
47
- it "has the paper's author" do
48
- expect(html).to include("van Rheenen")
49
- end
50
-
51
- it "has the paper's date" do
52
- expect(html).to include("Jul 2014")
53
- end
54
-
55
- it "has the URL to the resource" do
56
- expect(html).to include(link)
57
- end
58
- end
59
-
60
- context "regex URI match" do
61
-
62
- it "matches on specific articles" do
63
- expect(match("http://www.ncbi.nlm.nih.gov/pubmed/7288891")).to eq true
64
- end
65
-
66
- it "does not match on search" do
67
- expect(match("http://www.ncbi.nlm.nih.gov/pubmed/?term=rheenen+r")).to eq false
68
- end
69
-
70
- it "does not match on the root" do
71
- expect(match("http://www.ncbi.nlm.nih.gov/pubmed/")).to eq false
72
- end
73
-
74
- def match(url)
75
- Onebox::Engine::PubmedOnebox === URI(url)
76
- end
77
- end
78
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Onebox::Engine::SlidesOnebox do
4
-
5
- let(:link) { "http://slides.com/drksephy/ecmascript-2015" }
6
- let(:html) { described_class.new(link).to_html }
7
-
8
- before do
9
- fake(link, response("slides"))
10
- end
11
-
12
- describe "#placeholder_html" do
13
- it "returns an image as the placeholder" do
14
- expect(Onebox.preview(link).placeholder_html).to include("//s3.amazonaws.com/media-p.slid.es/thumbnails/secure/cff7c3/decks.jpg")
15
- end
16
- end
17
-
18
- describe "#to_html" do
19
- it "returns iframe embed" do
20
- expect(html).to include(URI(link).path)
21
- expect(html).to include("iframe")
22
- end
23
- end
24
- end
@@ -1,97 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Onebox::Engine::StackExchangeOnebox do
4
- describe 'domains' do
5
- [
6
- 'stackoverflow.com', 'meta.stackoverflow.com',
7
- 'superuser.com', 'meta.superuser.com',
8
- 'serverfault.com', 'meta.serverfault.com',
9
- 'askubuntu.com', 'meta.askubuntu.com',
10
- 'mathoverflow.net', 'meta.mathoverflow.net',
11
- 'money.stackexchange.com', 'meta.money.stackexchange.com',
12
- 'stackapps.com'
13
- ].each do |domain|
14
- it "matches question with short URL on #{domain}" do
15
- expect(described_class === URI("http://#{domain}/q/55495")).to eq(true)
16
- end
17
-
18
- it "matches question with long URL on #{domain}" do
19
- expect(described_class === URI("http://#{domain}/questions/55495/title-of-question")).to eq(true)
20
- end
21
-
22
- it "matches answer with short URL on #{domain}" do
23
- expect(described_class === URI("http://#{domain}/a/55503")).to eq(true)
24
- end
25
-
26
- it "matches question with long URL on #{domain}" do
27
- expect(described_class === URI("http://#{domain}/questions/55495/title-of-question/55503#55503")).to eq(true)
28
- end
29
- end
30
-
31
- it "doesn't match question on example.com" do
32
- expect(described_class === URI('http://example.com/q/4711')).to eq(false)
33
- end
34
-
35
- it "doesn't match answer on example.com" do
36
- expect(described_class === URI('http://example.com/a/4711')).to eq(false)
37
- end
38
- end
39
-
40
- {
41
- 'long URL' => 'http://stackoverflow.com/questions/17992553/concept-behind-these-four-lines-of-tricky-c-code',
42
- 'short URL' => 'http://stackoverflow.com/q/17992553'
43
- }.each do |name, url|
44
- describe "question with #{name}" do
45
- before(:all) do
46
- @link = url
47
- fake('https://api.stackexchange.com/2.2/questions/17992553?site=stackoverflow.com&filter=!5-duuxrJa-iw9oVvOA(JNimB5VIisYwZgwcfNI', response('stackexchange-question'))
48
- end
49
-
50
- include_context 'engines'
51
- it_behaves_like 'an engine'
52
-
53
- describe '#to_html' do
54
- it 'includes question title' do
55
- expect(html).to include('Concept behind these four lines of tricky C code')
56
- end
57
-
58
- it "includes 'asked by'" do
59
- expect(html).to include('asked by')
60
- end
61
-
62
- it "doesn't include 'answered by'" do
63
- expect(html).not_to include('answered by')
64
- end
65
- end
66
- end
67
- end
68
-
69
- {
70
- 'long URL' => 'http://stackoverflow.com/questions/17992553/concept-behind-these-four-lines-of-tricky-c-code/17992906#17992906',
71
- 'short URL' => 'http://stackoverflow.com/a/17992906'
72
- }.each do |name, url|
73
- describe "answer with #{name}" do
74
- before(:all) do
75
- @link = url
76
- fake('https://api.stackexchange.com/2.2/answers/17992906?site=stackoverflow.com&filter=!.FjueITQdx6-Rq3Ue9PWG.QZ2WNdW', response('stackexchange-answer'))
77
- end
78
-
79
- include_context 'engines'
80
- it_behaves_like 'an engine'
81
-
82
- describe '#to_html' do
83
- it 'includes question title' do
84
- expect(html).to include('Concept behind these four lines of tricky C code')
85
- end
86
-
87
- it "includes 'answered by'" do
88
- expect(html).to include('answered by')
89
- end
90
-
91
- it "doesn't include 'asked by'" do
92
- expect(html).not_to include('asked by')
93
- end
94
- end
95
- end
96
- end
97
- end