Added v 0.2.2 snapshot.
[twitter4r-core.git] / spec / twitter / client / friendship_spec.rb
blob162e210bb8b00a567898947502f0032564f31ba4
1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#friend" do
4   before(:each) do
5     @twitter = client_context
6     @id = 1234567
7     @screen_name = 'dummylogin'
8     @friend = Twitter::User.new(:id => @id, :screen_name => @screen_name)
9     @uris = Twitter::Client.class_eval("@@FRIENDSHIP_URIS")
10     @request = mas_net_http_get(:basic_auth => nil)
11     @response = mas_net_http_response(:success)
12     @connection = mas_net_http(@response)
13     Net::HTTP.stub!(:new).and_return(@connection)
14     Twitter::User.stub!(:unmarshal).and_return(@friend)
15   end
16   
17   def create_uri(action, id)
18         "#{@uris[action]}/#{id}.json"
19   end
20   
21   it "should create expected HTTP GET request for :add case using integer user ID" do
22         # the integer user ID scenario...
23     @twitter.should_receive(:create_http_get_request).with(create_uri(:add, @id)).and_return(@request)
24     @twitter.friend(:add, @id)
25   end
26   
27   it "should create expected HTTP GET request for :add case using screen name" do
28         # the screen name scenario...
29     @twitter.should_receive(:create_http_get_request).with(create_uri(:add, @screen_name)).and_return(@request)
30     @twitter.friend(:add, @screen_name)
31   end
33         it "should create expected HTTP GET request for :add case using Twitter::User object" do
34         # the Twitter::User object scenario...
35     @twitter.should_receive(:create_http_get_request).with(create_uri(:add, @friend.to_i)).and_return(@request)
36     @twitter.friend(:add, @friend)
37   end
38   
39   it "should create expected HTTP GET request for :remove case using integer user ID" do
40         # the integer user ID scenario...
41     @twitter.should_receive(:create_http_get_request).with(create_uri(:remove, @id)).and_return(@request)
42     @twitter.friend(:remove, @id)
43   end
45         it "should create expected HTTP GET request for :remove case using screen name" do
46         # the screen name scenario...
47     @twitter.should_receive(:create_http_get_request).with(create_uri(:remove, @screen_name)).and_return(@request)
48     @twitter.friend(:remove, @screen_name)
49   end
51   it "should create expected HTTP GET request for :remove case using Twitter::User object" do
52         # the Twitter::User object scenario...
53     @twitter.should_receive(:create_http_get_request).with(create_uri(:remove, @friend.to_i)).and_return(@request)
54     @twitter.friend(:remove, @friend)
55   end
56   
57   it "should bless user model returned for :add case" do
58     @twitter.should_receive(:bless_model).with(@friend)
59     @twitter.friend(:add, @friend)
60   end
61   
62   it "should bless user model returned for :remove case" do
63     @twitter.should_receive(:bless_model).with(@friend)
64     @twitter.friend(:remove, @friend)
65   end
66   
67   it "should raise ArgumentError if action given is not valid" do
68     lambda {
69       @twitter.friend(:crap, @friend)
70     }.should raise_error(ArgumentError)
71   end
72   
73   after(:each) do
74     nilize(@twitter, @id, @uris, @request, @response, @connection)
75   end
76 end