spec/lib/hwacha_spec.rb in hwacha-0.2.0 vs spec/lib/hwacha_spec.rb in hwacha-0.3.0
- old
+ new
@@ -1,118 +1,135 @@
require_relative '../../lib/hwacha'
-require 'vcr'
-VCR.configure do |c|
- c.cassette_library_dir = 'spec/fixtures/cassettes'
- c.hook_into :typhoeus
+RSpec.configure do |config|
+ config.before :each do
+ Typhoeus::Expectation.clear
+ end
end
describe Hwacha, "initialization" do
it "defaults to 20 max concurrent requests" do
- expect(Hwacha.new.max_concurrent_requests).to eq 20
+ expect(Hwacha.new.config.max_concurrent_requests).to eq 20
end
it "takes an integer argument to set the number of max concurrent requests" do
- expect(Hwacha.new(10).max_concurrent_requests).to eq 10
+ expect(Hwacha.new(10).config.max_concurrent_requests).to eq 10
end
it "can set max_concurrent_requests via a configuration object" do
hwacha = Hwacha.new do |config|
config.max_concurrent_requests = 10
end
- expect(hwacha.max_concurrent_requests).to eq 10
+ expect(hwacha.config.max_concurrent_requests).to eq 10
end
end
-describe Hwacha, "instance methods" do
+describe Hwacha, "Typhoeus configuration" do
+ describe "#build_hydra" do
+ context "when max_concurrent_requests is set" do
+ subject do
+ Hwacha.new do |config|
+ config.max_concurrent_requests = max_concurrent_requests
+ end
+ end
+
+ let(:max_concurrent_requests) { 10 }
+
+ it "sets max_concurrency from max_concurrent_requests" do
+ expect(subject.build_hydra.max_concurrency).to eq max_concurrent_requests
+ end
+ end
+ end
+end
+
+describe Hwacha, "url checking" do
let(:url_with_success_response) { 'rakeroutes.com' }
let(:url_with_404_response) { 'rakeroutes.com/this-url-does-not-exist' }
let(:not_a_url) { '' }
let(:various_urls) do
[url_with_success_response, url_with_404_response, not_a_url]
end
+ let(:http_200_response) do
+ Typhoeus::Response.new({
+ :code => 200,
+ :body => "Hwacha!",
+ :effective_url => "HTTP://#{url_with_success_response}/",
+ })
+ end
+ let(:http_404_response) do
+ Typhoeus::Response.new({
+ :code => 404,
+ :body => "404",
+ :effective_url => "HTTP://#{url_with_404_response}/",
+ })
+ end
+ before do
+ Typhoeus.stub(url_with_success_response).and_return(http_200_response)
+ Typhoeus.stub(url_with_404_response).and_return(http_404_response)
+ end
+
describe "#check" do
it "yields when there is a successful web response" do
- VCR.use_cassette('url_with_success_response') do
- expect { |probe| subject.check(url_with_success_response, &probe) }.to yield_control
- end
+ expect { |probe| subject.check(url_with_success_response, &probe) }.to yield_control
end
it "yields when there is not a successful web response" do
- VCR.use_cassette('url_with_404_response') do
- expect { |probe| subject.check(url_with_404_response, &probe) }.to yield_control
- end
+ expect { |probe| subject.check(url_with_404_response, &probe) }.to yield_control
end
it "yields when there is no web response" do
- VCR.use_cassette('not_a_url') do
- expect { |probe| subject.check(not_a_url, &probe) }.to yield_control
- end
+ expect { |probe| subject.check(not_a_url, &probe) }.to yield_control
end
it "yields the checked URL" do
- VCR.use_cassette('url_with_success_response') do
- subject.check(url_with_success_response) do |url, _|
- expect(url).to eq "HTTP://%s/" % url_with_success_response
- end
+ subject.check(url_with_success_response) do |url, _|
+ expect(url).to eq "HTTP://%s/" % url_with_success_response
end
end
it "yields the web response" do
- VCR.use_cassette('url_with_success_response') do
- subject.check(url_with_success_response) do |_, response|
- expect(response.success?).to be_true
- end
+ subject.check(url_with_success_response) do |_, response|
+ expect(response.success?).to be_true
end
end
it "checks an array of urls and executes the block for each" do
- VCR.use_cassette('various_urls') do
- urls_checked = 0
+ urls_checked = 0
- subject.check(various_urls) do |url, response|
- urls_checked += 1
- end
-
- expect(urls_checked).to eq various_urls.size
+ subject.check(various_urls) do |url, response|
+ urls_checked += 1
end
+
+ expect(urls_checked).to eq various_urls.size
end
end
describe "#find_existing" do
it "yields when there is a successful web response" do
- VCR.use_cassette('url_with_success_response') do
- expect { |probe| subject.find_existing(url_with_success_response, &probe) }.to yield_control
- end
+ expect { |probe| subject.find_existing(url_with_success_response, &probe) }.to yield_control
end
it "does not yield when there is not a successful web response" do
- VCR.use_cassette('url_with_404_response') do
- expect { |probe| subject.find_existing(url_with_404_response, &probe) }.to_not yield_control
- end
+ expect { |probe| subject.find_existing(url_with_404_response, &probe) }.to_not yield_control
end
it "yields the checked URL" do
- VCR.use_cassette('url_with_success_response') do
- subject.find_existing(url_with_success_response) do |url|
- expect(url).to eq 'HTTP://%s/' % url_with_success_response
- end
+ subject.find_existing(url_with_success_response) do |url|
+ expect(url).to eq 'HTTP://%s/' % url_with_success_response
end
end
it "checks an array of URLs and executes the block for success responses" do
- VCR.use_cassette('various_urls') do
- successful_count = 0
- successful_url = nil
+ successful_count = 0
+ successful_url = nil
- subject.find_existing(various_urls) do |url|
- successful_count += 1
- successful_url = url
- end
-
- expect(successful_count).to eq 1
- expect(successful_url).to match url_with_success_response
+ subject.find_existing(various_urls) do |url|
+ successful_count += 1
+ successful_url = url
end
+
+ expect(successful_count).to eq 1
+ expect(successful_url).to match url_with_success_response
end
end
end