1 require File.expand_path(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 }
13 Twitter::Status.stub!(:unmarshal).and_return(@favorites)
16 it "should create expected HTTP GET request when not giving options" do
17 @twitter.should_receive(:rest_oauth_connect).with(:get, @uri, nil).and_return(@response)
21 it "should create expected HTTP GET request when giving :page options" do
22 @twitter.should_receive(:rest_oauth_connect).with(:get, @uri, @options).and_return(@response)
23 @twitter.favorites(@options)
26 it "should raise Twitter::RESTError when 401 HTTP response received without giving options" do
27 @connection = mas_net_http(mas_net_http_response(:not_authorized))
30 }.should raise_error(Twitter::RESTError)
33 it "should raise Twitter::RESTError when 401 HTTP response received when giving page options" do
34 @connection = mas_net_http(mas_net_http_response(:not_authorized))
36 @twitter.favorites(@options)
37 }.should raise_error(Twitter::RESTError)
40 it "should raise Twitter::RESTError when 403 HTTP response received without giving options" do
41 @connection = mas_net_http(mas_net_http_response(:forbidden))
44 }.should raise_error(Twitter::RESTError)
47 it "should raise Twitter::RESTError when 403 HTTP response received when giving page options" do
48 @connection = mas_net_http(mas_net_http_response(:forbidden))
50 @twitter.favorites(@options)
51 }.should raise_error(Twitter::RESTError)
54 it "should raise Twitter::RESTError when 500 HTTP response received without giving options" do
55 @connection = mas_net_http(mas_net_http_response(:server_error))
58 }.should raise_error(Twitter::RESTError)
61 it "should raise Twitter::RESTError when 500 HTTP response received when giving page options" do
62 @connection = mas_net_http(mas_net_http_response(:server_error))
64 @twitter.favorites(@options)
65 }.should raise_error(Twitter::RESTError)
69 nilize(@uri, @request, @twitter, @default_header, @response, @error_response, @connection)
73 module FavoriteSpecMixin
75 @base_uri = '/favourings'
76 @request = mas_net_http_get(:basic_auth => nil)
77 @twitter = client_context
78 @default_header = @twitter.send(:http_header)
79 @response = mas_net_http_response(:success)
80 @connection = mas_net_http(@response)
82 @status = mas_twitter_status(:id => @id, :to_i => @id)
83 Twitter::Status.stub!(:unmarshal).and_return(@status)
86 def create_uri(method, id)
87 "#{@base_uri}/#{method.to_s}/#{id.to_i.to_s}.json"
91 nilize(@uri, @request, @twitter, @default_header, @response, @error_response, @connection)
95 shared_examples_for "Twitter::Client#favorite error handling" do
96 it "should raise a Twitter::RESTError exception when a 401 HTTP response is received" do
97 connection = mas_net_http(mas_net_http_response(:not_authorized))
100 }.should raise_error(Twitter::RESTError)
103 it "should raise a Twitter::RESTError exception when a 403 HTTP response is received" do
104 connection = mas_net_http(mas_net_http_response(:forbidden))
107 }.should raise_error(Twitter::RESTError)
110 it "should raise a Twitter::RESTError exception when a 404 HTTP response is received" do
111 connection = mas_net_http(mas_net_http_response(:file_not_found))
114 }.should raise_error(Twitter::RESTError)
117 it "should raise a Twitter::RESTError exception when a 500 HTTP response is received" do
118 connection = mas_net_http(mas_net_http_response(:server_error))
121 }.should raise_error(Twitter::RESTError)
125 describe Twitter::Client, "#favorite(:add, status)" do
126 include FavoriteSpecMixin
127 it_should_behave_like "Twitter::Client#favorite error handling"
134 @twitter.favorite(:add, @id)
137 it "should create expected POST request for :add action supplying integer id of status" do
138 @twitter.should_receive(:rest_oauth_connect).with(:post, create_uri(:create, @id)).and_return(@request)
139 @twitter.favorite(:add, @id)
142 it "should create expected POST request for :add action supplying status object" do
143 @twitter.should_receive(:rest_oauth_connect).with(:post, create_uri(:create, @id)).and_return(@request)
144 @twitter.favorite(:add, @status)
152 describe Twitter::Client, "#favorite(:remove, status)" do
153 include FavoriteSpecMixin
154 it_should_behave_like "Twitter::Client#favorite error handling"
161 @twitter.favorite(:remove, @id)
164 it "should create expected DELETE request for :remove action supplying integer id of status" do
165 @twitter.should_receive(:rest_oauth_connect).with(:delete, create_uri(:destroy, @id)).and_return(@request)
169 it "should create expected DELETE request for :remove action supplying status object" do
170 @twitter.should_receive(:rest_oauth_connect).with(:delete, create_uri(:destroy, @id)).and_return(@request)
171 @twitter.favorite(:remove, @status)