Added v 0.4.0 snapshot.
[twitter4r-core.git] / spec / twitter / client / user_spec.rb
blob671fa31bbf944930d2cc95deb3a3860bcb62d45e
1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#user(id, :info)" do
4   before(:each) do
5     @twitter = client_context
6     @id = 395783
7     @screen_name = 'boris_johnson_is_funny_as_hell'
8     @user = Twitter::User.new(
9         :id => @id, 
10         :screen_name => @screen_name, 
11         :location => 'London'
12     )
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)
21   end
22   
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)
25     @twitter.user(@id)
26   end
27     
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)
31   end
32   
33   it "should bless model returned when giving numeric user id" do
34     @twitter.should_receive(:bless_model).with(@user).and_return(@user)
35     @twitter.user(@id)
36   end
37   
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)
41   end
43   after(:each) do
44     nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
45   end
46 end
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
51   before(:each) do
52     @twitter = client_context
53     @id = 395784
54     @screen_name = 'cafe_paradiso'
55     @user = Twitter::User.new(
56       :id => @id,
57       :screen_name => @screen_name,
58       :location => 'Urbana, IL'
59     )
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)
68   end
69   
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)
73   end
74   
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)
78   end
79   
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)
83   end
84   
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)
88   end
89   
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)
93   end
94   
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)    
98   end
99   
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)
103   end
104   
105   after(:each) do
106     nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
107   end
110 describe Twitter::Client, "#my(:info)" do
111   before(:each) do
112     @twitter = client_context
113     @screen_name = @twitter.instance_eval("@login")
114     @user = Twitter::User.new(
115       :id => 2394393, 
116       :screen_name => @screen_name,
117       :location => 'Glamorous Urbana'
118     )
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)
127   end
128   
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)
131     @twitter.my(:info)
132   end
133   
134   it "should bless the model object returned" do
135     @twitter.should_receive(:bless_models).with(@user).and_return(@user)
136     @twitter.my(:info)
137   end
138   
139   it "should return expected user object" do
140     user = @twitter.my(:info)
141     user.should eql(@user)
142   end
144   after(:each) do
145     nilize(@request, @response, @connection, @twitter, @user, @screen_name)
146   end
149 describe Twitter::Client, "#my(:friends)" do
150   before(:each) do
151     @twitter = client_context
152     @screen_name = @twitter.instance_eval("@login")
153     @friends = [
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'),
158     ]
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)
167   end
168   
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)
172   end
173   
174   it "should bless models returned" do
175     @twitter.should_receive(:bless_models).with(@friends).and_return(@friends)
176     @twitter.my(:friends)
177   end
178   
179   it "should return expected Array of friends" do
180     friends = @twitter.my(:friends)
181     friends.should eql(@friends)
182   end
183   
184   after(:each) do
185     nilize(@request, @response, @connection, @twitter, @friends, @screen_name)
186   end
189 describe Twitter::Client, "#my(:invalid_action)" do
190   before(:each) do
191     @twitter = client_context
192   end
193   
194   it "should raise ArgumentError for invalid user action" do
195     lambda {
196       @twitter.my(:crap)
197     }.should raise_error(ArgumentError)
198   end
199   
200   after(:each) do
201     nilize(@twitter)
202   end