1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#user(id, :info)" do
5 @twitter = client_context
7 @screen_name = 'boris_johnson_is_funny_as_hell'
8 @user = Twitter::User.new(
10 :screen_name => @screen_name,
13 @json = JSON.unparse(@user.to_hash)
14 @request = mas_net_http_get(:basic_auth => nil)
15 @response = mas_net_http_response(:success, @json)
16 @connection = mas_net_http(@response)
17 @uris = Twitter::Client.class_eval("@@USER_URIS")
18 @twitter.stub!(:create_http_get_request).and_return(@request)
19 Twitter::User.stub!(:unmarshal).and_return(@user)
20 Net::HTTP.stub!(:new).and_return(@connection)
23 it "should create expected HTTP GET request when giving numeric user id" do
24 @twitter.should_receive(:create_http_get_request).with(@uris[:info], {:user_id => @id}).and_return(@request)
28 it "should create expected HTTP GET request when giving screen name" do
29 @twitter.should_receive(:create_http_get_request).with(@uris[:info], {:screen_name => @screen_name}).and_return(@request)
30 @twitter.user(@screen_name)
33 it "should bless model returned when giving numeric user id" do
34 @twitter.should_receive(:bless_model).with(@user).and_return(@user)
38 it "should bless model returned when giving screen name" do
39 @twitter.should_receive(:bless_model).with(@user).and_return(@user)
40 @twitter.user(@screen_name)
44 nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
48 # TODO: Add specs for new Twitter::Client#user(id, :friends) and
49 # Twitter::Client#user(id, :followers) use cases.
50 describe Twitter::Client, "#user(id, :friends)" do
52 @twitter = client_context
54 @screen_name = 'cafe_paradiso'
55 @user = Twitter::User.new(
57 :screen_name => @screen_name,
58 :location => 'Urbana, IL'
60 @json = JSON.unparse(@user.to_hash)
61 @request = mas_net_http_get(:basic_auth => nil)
62 @response = mas_net_http_response(:success, @json)
63 @connection = mas_net_http(@response)
64 @uris = Twitter::Client.class_eval("@@USER_URIS")
65 @twitter.stub!(:create_http_get_request).and_return(@request)
66 Twitter::User.stub!(:unmarshal).and_return(@user)
67 Net::HTTP.stub!(:new).and_return(@connection)
70 it "should create expected HTTP GET request when giving numeric user id" do
71 @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:user_id => @id}).and_return(@request)
72 @twitter.user(@id, :friends)
75 it "should invoke #to_i on Twitter::User objecct given" do
76 @user.should_receive(:to_i).and_return(@id)
77 @twitter.user(@user, :friends)
80 it "should create expected HTTP GET request when giving Twitter::User object" do
81 @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:user_id => @user.to_i}).and_return(@request)
82 @twitter.user(@user, :friends)
85 it "should create expected HTTP GET request when giving screen name" do
86 @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:screen_name => @screen_name}).and_return(@request)
87 @twitter.user(@screen_name, :friends)
90 it "should bless model returned when giving numeric id" do
91 @twitter.should_receive(:bless_model).with(@user).and_return(@user)
92 @twitter.user(@id, :friends)
95 it "should bless model returned when giving Twitter::User object" do
96 @twitter.should_receive(:bless_model).with(@user).and_return(@user)
97 @twitter.user(@user, :friends)
100 it "should bless model returned when giving screen name" do
101 @twitter.should_receive(:bless_model).with(@user).and_return(@user)
102 @twitter.user(@screen_name, :friends)
106 nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
110 describe Twitter::Client, "#my(:info)" do
112 @twitter = client_context
113 @screen_name = @twitter.instance_eval("@login")
114 @user = Twitter::User.new(
116 :screen_name => @screen_name,
117 :location => 'Glamorous Urbana'
119 @json = JSON.unparse(@user.to_hash)
120 @request = mas_net_http_get(:basic_auth => nil)
121 @response = mas_net_http_response(:success, @json)
122 @connection = mas_net_http(@response)
123 @uris = Twitter::Client.class_eval("@@USER_URIS")
124 @twitter.stub!(:create_http_get_request).and_return(@request)
125 Net::HTTP.stub!(:new).and_return(@connection)
126 Twitter::User.stub!(:unmarshal).and_return(@user)
129 it "should create expected HTTP GET request" do
130 @twitter.should_receive(:create_http_get_request).with(@uris[:info], :id => @screen_name).and_return(@request)
134 it "should bless the model object returned" do
135 @twitter.should_receive(:bless_models).with(@user).and_return(@user)
139 it "should return expected user object" do
140 user = @twitter.my(:info)
141 user.should eql(@user)
145 nilize(@request, @response, @connection, @twitter, @user, @screen_name)
149 describe Twitter::Client, "#my(:friends)" do
151 @twitter = client_context
152 @screen_name = @twitter.instance_eval("@login")
154 Twitter::User.new(:screen_name => 'lucy_snowe'),
155 Twitter::User.new(:screen_name => 'jane_eyre'),
156 Twitter::User.new(:screen_name => 'tess_derbyfield'),
157 Twitter::User.new(:screen_name => 'elizabeth_jane_newson'),
159 @json = JSON.unparse(@friends.collect {|f| f.to_hash })
160 @request = mas_net_http_get(:basic_auth => nil)
161 @response = mas_net_http_response(:success, @json)
162 @connection = mas_net_http(@response)
163 @uris = Twitter::Client.class_eval("@@USER_URIS")
164 @twitter.stub!(:create_http_get_request).and_return(@request)
165 Twitter::User.stub!(:unmarshal).and_return(@friends)
166 Net::HTTP.stub!(:new).and_return(@connection)
169 it "should create expected HTTP GET request" do
170 @twitter.should_receive(:create_http_get_request).with(@uris[:friends], :id => @screen_name).and_return(@request)
171 @twitter.my(:friends)
174 it "should bless models returned" do
175 @twitter.should_receive(:bless_models).with(@friends).and_return(@friends)
176 @twitter.my(:friends)
179 it "should return expected Array of friends" do
180 friends = @twitter.my(:friends)
181 friends.should eql(@friends)
185 nilize(@request, @response, @connection, @twitter, @friends, @screen_name)
189 describe Twitter::Client, "#my(:invalid_action)" do
191 @twitter = client_context
194 it "should raise ArgumentError for invalid user action" do
197 }.should raise_error(ArgumentError)