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