Added v 0.2.2 snapshot.
[twitter4r-core.git] / spec / twitter / client / user_spec.rb
blobabd289ac1db706a3dbc14c8168c349db6418224d
1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#user(id, :followers)" do
4   before(:each) do
5     @twitter = client_context    
6     @id = 395783
7   end
8   
9   it "should raise ArgumentError" do
10     lambda {
11       @twitter.user(@id, :followers)
12     }.should raise_error(ArgumentError)
13   end
14   
15   after(:each) do
16     nilize(@twitter, @id)
17   end
18 end
20 describe Twitter::Client, "#user(id, :info)" do
21   before(:each) do
22     @twitter = client_context
23     @id = 395783
24     @screen_name = 'boris_johnson_is_funny_as_hell'
25     @user = Twitter::User.new(
26         :id => @id, 
27         :screen_name => @screen_name, 
28         :location => 'London'
29     )
30     @json = JSON.unparse(@user.to_hash)
31     @request = mas_net_http_get(:basic_auth => nil)
32     @response = mas_net_http_response(:success, @json)
33     @connection = mas_net_http(@response)
34     @uris = Twitter::Client.class_eval("@@USER_URIS")
35     @twitter.stub!(:create_http_get_request).and_return(@request)
36     Twitter::User.stub!(:unmarshal).and_return(@user)
37     Net::HTTP.stub!(:new).and_return(@connection)
38   end
39   
40   it "should create expected HTTP GET request when giving numeric user id" do
41     @twitter.should_receive(:create_http_get_request).with(@uris[:info], {:id => @id}).and_return(@request)
42     @twitter.user(@id)
43   end
44     
45   it "should create expected HTTP GET request when giving screen name" do
46     @twitter.should_receive(:create_http_get_request).with(@uris[:info], {:id => @screen_name}).and_return(@request)
47     @twitter.user(@screen_name)
48   end
49   
50   it "should bless model returned when giving numeric user id" do
51     @twitter.should_receive(:bless_model).with(@user).and_return(@model)
52     @twitter.user(@id)
53   end
54   
55   it "should bless model returned when giving screen name" do
56     @twitter.should_receive(:bless_model).with(@user).and_return(@model)
57     @twitter.user(@screen_name)
58   end
60   after(:each) do
61     nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
62   end
63 end
65 # TODO: Add specs for new Twitter::Client#user(id, :friends) and 
66 # Twitter::Client#user(id, :followers) use cases.
67 describe Twitter::Client, "#user(id, :friends)" do
68   before(:each) do
69     @twitter = client_context
70   end
71   
72   it "should " do
73     
74   end
75   
76   after(:each) do
77     
78   end
79 end
81 describe Twitter::Client, "#my(:info)" do
82   before(:each) do
83     @twitter = client_context
84     @screen_name = @twitter.instance_eval("@login")
85     @user = Twitter::User.new(
86       :id => 2394393, 
87       :screen_name => @screen_name,
88       :location => 'Glamorous Urbana'
89     )
90     @json = JSON.unparse(@user.to_hash)
91     @request = mas_net_http_get(:basic_auth => nil)
92     @response = mas_net_http_response(:success, @json)
93     @connection = mas_net_http(@response)
94     @uris = Twitter::Client.class_eval("@@USER_URIS")
95     @twitter.stub!(:create_http_get_request).and_return(@request)
96     Net::HTTP.stub!(:new).and_return(@connection)
97     Twitter::User.stub!(:unmarshal).and_return(@user)
98   end
99   
100   it "should create expected HTTP GET request" do
101     @twitter.should_receive(:create_http_get_request).with(@uris[:info], :id => @screen_name).and_return(@request)
102     @twitter.my(:info)
103   end
104   
105   it "should bless the model object returned" do
106     @twitter.should_receive(:bless_models).with(@user).and_return(@user)
107     @twitter.my(:info)
108   end
109   
110   it "should return expected user object" do
111     user = @twitter.my(:info)
112     user.should eql(@user)
113   end
115   after(:each) do
116     nilize(@request, @response, @connection, @twitter, @user, @screen_name)
117   end
120 describe Twitter::Client, "#my(:friends)" do
121   before(:each) do
122     @twitter = client_context
123     @screen_name = @twitter.instance_eval("@login")
124     @friends = [
125       Twitter::User.new(:screen_name => 'lucy_snowe'),
126       Twitter::User.new(:screen_name => 'jane_eyre'),
127       Twitter::User.new(:screen_name => 'tess_derbyfield'),
128       Twitter::User.new(:screen_name => 'elizabeth_jane_newson'),
129     ]
130     @json = JSON.unparse(@friends.collect {|f| f.to_hash })
131     @request = mas_net_http_get(:basic_auth => nil)
132     @response = mas_net_http_response(:success, @json)
133     @connection = mas_net_http(@response)
134     @uris = Twitter::Client.class_eval("@@USER_URIS")
135     @twitter.stub!(:create_http_get_request).and_return(@request)
136     Twitter::User.stub!(:unmarshal).and_return(@friends)
137     Net::HTTP.stub!(:new).and_return(@connection)
138   end
139   
140   it "should create expected HTTP GET request" do
141     @twitter.should_receive(:create_http_get_request).with(@uris[:friends], :id => @screen_name).and_return(@request)
142     @twitter.my(:friends)
143   end
144   
145   it "should bless models returned" do
146     @twitter.should_receive(:bless_models).with(@friends).and_return(@friends)
147     @twitter.my(:friends)
148   end
149   
150   it "should return expected Array of friends" do
151     friends = @twitter.my(:friends)
152     friends.should eql(@friends)
153   end
154   
155   after(:each) do
156     nilize(@request, @response, @connection, @twitter, @friends, @screen_name)
157   end
160 describe Twitter::Client, "#my(:invalid_action)" do
161   before(:each) do
162     @twitter = client_context
163   end
164   
165   it "should raise ArgumentError for invalid user action" do
166     lambda {
167       @twitter.my(:crap)
168     }.should raise_error(ArgumentError)
169   end
170   
171   after(:each) do
172     nilize(@twitter)
173   end