spec/twitter/error_spec.rb in twitter-4.8.1 vs spec/twitter/error_spec.rb in twitter-5.0.0.rc.1

- old
+ new

@@ -1,20 +1,68 @@ require 'helper' describe Twitter::Error do - describe "#initialize" do - it "wraps another error class" do - begin - raise Faraday::Error::ClientError.new("Oops") - rescue Faraday::Error::ClientError - begin - raise Twitter::Error - rescue Twitter::Error => error - expect(error.message).to eq "Oops" - expect(error.wrapped_exception.class).to eq Faraday::Error::ClientError + before do + @client = Twitter::REST::Client.new(:consumer_key => "CK", :consumer_secret => "CS", :access_token => "AT", :access_token_secret => "AS") + end + + describe "#message" do + it "returns the message of the wrapped exception" do + error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops")) + expect(error.message).to eq("Oops") + end + end + + describe "#rate_limit" do + it "returns the wrapped exception" do + error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops")) + expect(error.rate_limit).to be_a Twitter::RateLimit + end + end + + describe "#wrapped_exception" do + it "returns the wrapped exception" do + error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops")) + expect(error.wrapped_exception.class).to eq(Faraday::Error::ClientError) + end + end + + Twitter::Error.errors.each do |status, exception| + + [nil, "error", "errors"].each do |body| + context "when HTTP status is #{status} and body is #{body.inspect}" do + before do + body_message = '{"' + body + '":"Client Error"}' unless body.nil? + stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message) end + it "raises #{exception.name}" do + expect{@client.user_timeline("sferik")}.to raise_error exception + end end end - end + context "when HTTP status is #{status} and body is errors" do + context "when errors is an array of hashes" do + context "when error code is nil" do + before do + body_message = '{"errors":[{"message":"Client Error"}]}' + stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message) + end + it "raises #{exception.name}" do + expect{@client.user_timeline("sferik")}.to raise_error{|error| expect(error.code).to be_nil} + end + context "when error code is 187" do + before do + body_message = '{"errors":[{"message":"Client Error","code":187}]}' + stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message) + end + it "raises #{exception.name}" do + expect{@client.user_timeline("sferik")}.to raise_error{|error| expect(error.code).to eq(187)} + end + end + end + end + end + + end end