Added v 0.2.3 snapshot.
[twitter4r-core.git] / spec / twitter / client / messaging_spec.rb
blob562876add80e3b066d0a1feda30bed7635da7d75
1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "#messages" do
4   before(:each) do
5     @twitter = client_context
6     @uris = Twitter::Client.class_eval("@@MESSAGING_URIS")
7     @request = mas_net_http_get(:basic_auth => nil)
8     @response = mas_net_http_response(:success, "[]")
9     @connection = mas_net_http(@response)
10     Net::HTTP.stub!(:new).and_return(@connection)
11     @messages = []
12     Twitter::Message.stub!(:unmarshal).and_return(@messages)
13   end
14   
15   it "should create expected HTTP GET request for :received case" do
16     @twitter.should_receive(:create_http_get_request).with(@uris[:received]).and_return(@request)
17     @twitter.messages(:received)
18   end
19   
20   it "should bless the Array returned from Twitter for :received case" do
21     @twitter.should_receive(:bless_models).with(@messages).and_return(@messages)
22     @twitter.messages(:received)
23   end
24   
25   it "should create expected HTTP GET request for :sent case" do
26     @twitter.should_receive(:create_http_get_request).with(@uris[:sent]).and_return(@request)
27     @twitter.messages(:sent)
28   end
29   
30   it "should bless the Array returned from Twitter for :sent case" do
31     @twitter.should_receive(:bless_models).with(@messages).and_return(@messages)
32     @twitter.messages(:sent)
33   end
34   
35   it "should raise an ArgumentError when giving an invalid messaging action" do
36     lambda {
37       @twitter.messages(:crap)
38     }.should raise_error(ArgumentError)
39   end
40   
41   after(:each) do
42     nilize(@twitter, @uris, @request, @response, @connection, @messages)
43   end
44 end
46 describe Twitter::Client, "#message" do
47   before(:each) do
48     @twitter = client_context
49     @attributes = {
50       :id => 34324, 
51       :text => 'Randy, are you coming over later?', 
52       :sender => {:id => 123, :screen_name => 'mylogin'},
53       :recipient => {:id => 1234, :screen_name => 'randy'},
54     }
55     @message = Twitter::Message.new(@attributes)
56     @uris = Twitter::Client.class_eval("@@MESSAGING_URIS")
57     @request = mas_net_http_get(:basic_auth => nil)
58     @json = JSON.unparse(@attributes)
59     @response = mas_net_http_response(:success, @json)
60     @connection = mas_net_http(@response)
61     @source = Twitter::Client.class_eval("@@defaults[:source]")
63     Net::HTTP.stub!(:new).and_return(@connection)
64     Twitter::Message.stub!(:unmarshal).and_return(@message)
65   end
66   
67   it "should invoke #http_connect with expected arguments for :post case" do
68         @twitter.should_receive(:http_connect).with({:text => @message.text, :user => @message.recipient.to_i, :source => @source}.to_http_str).and_return(@response)
69     @twitter.message(:post, @message.text, @message.recipient)
70   end
71   
72   it "should create expected HTTP POST request for :post case" do
73     @twitter.should_receive(:create_http_post_request).with(@uris[:post]).and_return(@request)
74     @twitter.message(:post, @message.text, @message.recipient)
75   end
76   
77   it "should bless returned Twitter::Message object for :post case" do
78     @twitter.should_receive(:bless_model).with(@message)
79     @twitter.message(:post, @message.text, @message.recipient)
80   end
81   
82   it "should create expected HTTP DELETE request for :delete case" do
83     @twitter.should_receive(:create_http_delete_request).with(@uris[:delete], {:id => @message.to_i}).and_return(@request)
84     @twitter.message(:delete, @message)
85   end
86   
87   it "should bless returned Twitter::Message object for :delete case" do
88     @twitter.should_receive(:bless_model).with(@message)
89     @twitter.message(:delete, @message)
90   end
91   
92   it "should invoke #to_i on message object passed in for :delete case" do
93     @message.should_receive(:to_i).and_return(@message.id)
94     @twitter.message(:delete, @message)
95   end
96   
97   it "should raise an ArgumentError when giving an invalid messaging action" do
98     lambda {
99       @twitter.message(:crap, @message)
100     }.should raise_error(ArgumentError)
101   end
102   
103   it "should raise an ArgumentError for :post case if user argument is not supplied" do
104     lambda {
105       @twitter.message(:post, @message)
106     }.should raise_error(ArgumentError)
107   end
108   
109   it "should raise an ArgumentError for :post case if user argument is nil" do
110     lambda {
111       @twitter.message(:post, @message, nil)
112     }.should raise_error(ArgumentError)
113   end
115   after(:each) do
116     nilize(@twitter, @uris, @request, @response, @connection, @sender, @recipient, @message, @attributes)
117   end