1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#favorites" do
5 @uri = '/favorites.json'
6 @request = mas_net_http_get(:basic_auth => nil)
7 @twitter = client_context
8 @default_header = @twitter.send(:http_header)
9 @response = mas_net_http_response(:success)
10 @connection = mas_net_http(@response)
11 @options = { :page => 4 }
12 Net::HTTP.stub!(:new).and_return(@connection)
14 Twitter::Status.stub!(:unmarshal).and_return(@favorites)
17 it "should create expected HTTP GET request when not giving options" do
18 @twitter.should_receive(:create_http_get_request).with(@uri).and_return(@request)
22 it "should create expected HTTP GET request when giving :page options" do
23 @twitter.should_receive(:create_http_get_request).with("#{@uri}?#{@options.to_http_str}").and_return(@request)
24 @twitter.favorites(@options)
27 it "should raise Twitter::RESTError when 401 HTTP response received without giving options" do
28 @connection = mas_net_http(mas_net_http_response(:not_authorized))
31 }.should raise_error(Twitter::RESTError)
34 it "should raise Twitter::RESTError when 401 HTTP response received when giving page options" do
35 @connection = mas_net_http(mas_net_http_response(:not_authorized))
37 @twitter.favorites(@options)
38 }.should raise_error(Twitter::RESTError)
41 it "should raise Twitter::RESTError when 403 HTTP response received without giving options" do
42 @connection = mas_net_http(mas_net_http_response(:forbidden))
45 }.should raise_error(Twitter::RESTError)
48 it "should raise Twitter::RESTError when 403 HTTP response received when giving page options" do
49 @connection = mas_net_http(mas_net_http_response(:forbidden))
51 @twitter.favorites(@options)
52 }.should raise_error(Twitter::RESTError)
55 it "should raise Twitter::RESTError when 500 HTTP response received without giving options" do
56 @connection = mas_net_http(mas_net_http_response(:server_error))
59 }.should raise_error(Twitter::RESTError)
62 it "should raise Twitter::RESTError when 500 HTTP response received when giving page options" do
63 @connection = mas_net_http(mas_net_http_response(:server_error))
65 @twitter.favorites(@options)
66 }.should raise_error(Twitter::RESTError)
70 nilize(@uri, @request, @twitter, @default_header, @response, @error_response, @connection)
74 module FavoriteSpecMixin
76 @base_uri = '/favourings'
77 @request = mas_net_http_get(:basic_auth => nil)
78 @twitter = client_context
79 @default_header = @twitter.send(:http_header)
80 @response = mas_net_http_response(:success)
81 @connection = mas_net_http(@response)
82 Net::HTTP.stub!(:new).and_return(@connection)
84 @status = mas_twitter_status(:id => @id, :to_i => @id)
85 Twitter::Status.stub!(:unmarshal).and_return(@status)
88 def create_uri(method, id)
89 "#{@base_uri}/#{method.to_s}/#{id.to_i.to_s}.json"
92 def connection=(connection)
93 @connection = connection
97 nilize(@uri, @request, @twitter, @default_header, @response, @error_response, @connection)
101 describe "Twitter::Client#favorite error handling", :shared => true do
102 it "should raise a Twitter::RESTError exception when a 401 HTTP response is received" do
103 connection = mas_net_http(mas_net_http_response(:not_authorized))
106 }.should raise_error(Twitter::RESTError)
109 it "should raise a Twitter::RESTError exception when a 403 HTTP response is received" do
110 connection = mas_net_http(mas_net_http_response(:forbidden))
113 }.should raise_error(Twitter::RESTError)
116 it "should raise a Twitter::RESTError exception when a 404 HTTP response is received" do
117 connection = mas_net_http(mas_net_http_response(:file_not_found))
120 }.should raise_error(Twitter::RESTError)
123 it "should raise a Twitter::RESTError exception when a 500 HTTP response is received" do
124 connection = mas_net_http(mas_net_http_response(:server_error))
127 }.should raise_error(Twitter::RESTError)
131 describe Twitter::Client, "#favorite(:add, status)" do
132 include FavoriteSpecMixin
133 it_should_behave_like "Twitter::Client#favorite error handling"
140 @twitter.favorite(:add, @id)
143 it "should create expected POST request for :add action supplying integer id of status" do
144 @twitter.should_receive(:create_http_post_request).with(create_uri(:create, @id)).and_return(@request)
145 @twitter.favorite(:add, @id)
148 it "should create expected POST request for :add action supplying status object" do
149 @twitter.should_receive(:create_http_post_request).with(create_uri(:create, @id)).and_return(@request)
150 @twitter.favorite(:add, @status)
158 describe Twitter::Client, "#favorite(:remove, status)" do
159 include FavoriteSpecMixin
160 it_should_behave_like "Twitter::Client#favorite error handling"
167 @twitter.favorite(:remove, @id)
170 it "should create expected DELETE request for :remove action supplying integer id of status" do
171 @twitter.should_receive(:create_http_delete_request).with(create_uri(:destroy, @id)).and_return(@request)
172 @twitter.favorite(:remove, @id)
175 it "should create expected DELETE request for :remove action supplying status object" do
176 @twitter.should_receive(:create_http_delete_request).with(create_uri(:destroy, @id)).and_return(@request)
177 @twitter.favorite(:remove, @status)