Skip to content

Commit

Permalink
Merge pull request #61 from ruby-oembed/feature/per-provider-specs
Browse files Browse the repository at this point in the history
per-Provider specs
  • Loading branch information
metavida committed May 22, 2016
2 parents 9b432b0 + 3fb7f8a commit a585f55
Show file tree
Hide file tree
Showing 8 changed files with 1,733 additions and 14 deletions.
1,199 changes: 1,199 additions & 0 deletions spec/cassettes/OEmbed_Providers_Slideshare.yml

Large diffs are not rendered by default.

403 changes: 403 additions & 0 deletions spec/cassettes/OEmbed_Providers_Twitter.yml

Large diffs are not rendered by default.

7 changes: 0 additions & 7 deletions spec/provider_discovery_spec.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
require File.dirname(__FILE__) + '/spec_helper'
require 'json'
require 'vcr'

VCR.config do |c|
c.default_cassette_options = { :record => :new_episodes }
c.cassette_library_dir = 'spec/cassettes'
c.stub_with :fakeweb
end

describe OEmbed::ProviderDiscovery do
before(:all) do
Expand Down
7 changes: 0 additions & 7 deletions spec/provider_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
require File.dirname(__FILE__) + '/spec_helper'
require 'vcr'

VCR.config do |c|
c.default_cassette_options = { :record => :new_episodes }
c.cassette_library_dir = 'spec/cassettes'
c.stub_with :fakeweb
end

describe OEmbed::Provider do
before(:all) do
Expand Down
42 changes: 42 additions & 0 deletions spec/providers/slideshare_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
require File.join(File.dirname(__FILE__), '../spec_helper')
require 'support/shared_examples_for_providers'

describe 'OEmbed::Providers::Slideshare' do
before(:all) do
VCR.insert_cassette('OEmbed_Providers_Slideshare')
end
after(:all) do
VCR.eject_cassette
end

include OEmbedSpecHelper

let(:provider_class) { OEmbed::Providers::Slideshare }

expected_valid_urls = (
%w(https:// http://).map do |protocol|
%w(slideshare.net www.slideshare.net de.slideshare.net).map do |host|
[
'/gabriele.lana/the-magic-of-elixir',
# Even though Slideshare's oEmbed endpoint
# is supposed to /mobile/ URLs,
# as of 2016-05-21 it's returning 404 results for these URLs.
#'/mobile/gabriele.lana/the-magic-of-elixir',
].map do |path|
File.join(protocol, host, path)
end
end
end
).flatten

expected_invalid_urls = %w(
http://www.slideshare.net
http://www.slideshare.net/gabriele.lana
)

it_should_behave_like(
"an OEmbed::Proviers instance",
expected_valid_urls,
expected_invalid_urls
)
end
44 changes: 44 additions & 0 deletions spec/providers/twitter_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
require File.join(File.dirname(__FILE__), '../spec_helper')
require 'support/shared_examples_for_providers'

describe 'OEmbed::Providers::Twitter' do
before(:all) do
VCR.insert_cassette('OEmbed_Providers_Twitter')
end
after(:all) do
VCR.eject_cassette
end

include OEmbedSpecHelper

let(:provider_class) { OEmbed::Providers::Twitter }

expected_valid_urls = %w(
https://twitter.com/RailsGirlsSoC/status/702136612822634496
https://www.twitter.com/bpoweski/status/71633762
)
expected_invalid_urls = %w(
http://twitter.com/RailsGirlsSoC/status/702136612822634496
https://twitter.es/FCBarcelona_es/status/734194638697959424
)

it_should_behave_like(
"an OEmbed::Proviers instance",
expected_valid_urls,
expected_invalid_urls
)

context "using XML" do
expected_valid_urls.each do |valid_url|
context "given the valid URL #{valid_url}" do
describe ".get" do
it "should encounter a 400 error" do
expect {
provider_class.get(valid_url, :format=>:xml)
}.to raise_error(OEmbed::UnknownResponse, /\b400\b/)
end
end
end
end
end
end
6 changes: 6 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
require 'rubygems'

require 'vcr'
VCR.config do |c|
c.default_cassette_options = { :record => :new_episodes }
c.cassette_library_dir = 'spec/cassettes'
c.stub_with :fakeweb
end

require 'coveralls'
Coveralls.wear!
Expand Down
39 changes: 39 additions & 0 deletions spec/support/shared_examples_for_providers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
RSpec.shared_examples "an OEmbed::Proviers instance" do |expected_valid_urls, expected_invalid_urls|
expected_valid_urls.each do |valid_url|
context "given the valid URL #{valid_url}" do
describe ".include?" do
it "should be true" do
expect(provider_class.include?(valid_url)).to be_truthy
end
end

describe ".get" do
it "should return a response" do
response = nil
expect {
response = provider_class.get(valid_url)
}.to_not raise_error
expect(response).to be_a(OEmbed::Response)
end
end
end
end

expected_invalid_urls.each do |invalid_url|
context "given the invalid URL #{invalid_url}" do
describe ".include?" do
it "should be false" do
expect(provider_class.include?(invalid_url)).to be_falsey
end
end

describe ".get" do
it "should not find a response" do
expect {
provider_class.get(invalid_url)
}.to raise_error(OEmbed::NotFound)
end
end
end
end
end

0 comments on commit a585f55

Please sign in to comment.