1 require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
3 describe Twitter::Client, "Timeline API" do
5 @client = client_context
6 @uris = Twitter::Client.class_eval("@@TIMELINE_URIS")
7 @user = Twitter::User.new(:screen_name => 'mylogin')
8 @status = Twitter::Status.new(:id => 23343443, :text => 'I love Lucy!', :user => @user)
10 @json = JSON.unparse([@status.to_hash])
11 @request = mas_net_http_get(:basic_auth => nil)
12 @response = mas_net_http_response(:success, @json)
13 @connection = mas_net_http(@response)
15 :public => {:since_id => 3249328},
16 :friends => {:id => 'myfriend'},
17 :user => {:id => 'auser'},
22 it "should respond to instance method #timeline_for" do
23 @client.should respond_to(:timeline_for)
26 it "should call #http_get with expected parameters for :public case" do
27 @client.should_receive(:http_connect).and_return(mas_net_http_response(:success, @json))
28 @client.timeline_for(:public)
31 it "should yield to block for each status in timeline" do
32 @client.should_receive(:http_connect).and_return(mas_net_http_response(:success, @json))
33 Twitter::Status.should_receive(:unmarshal).and_return(@timeline)
35 @client.timeline_for(:public) do |status|
36 status.should eql(@status)
39 count.should eql(@timeline.size)
42 it "should generate expected HTTP GET request for generic :public case" do
43 @client.should_receive(:create_http_get_request).with(@uris[:public], {}).and_return(@request)
44 timeline = @client.timeline_for(:public)
45 timeline.should eql(@timeline)
48 it "should generate expected HTTP GET request for :public case with expected parameters" do
49 @client.should_receive(:create_http_get_request).with(@uris[:public], @params[:public]).and_return(@request)
50 timeline = @client.timeline_for(:public, @params[:public])
51 timeline.should eql(@timeline)
54 it "should generate expected HTTP GET request for generic :friends case" do
55 @client.should_receive(:create_http_get_request).with(@uris[:friends], {}).and_return(@request)
56 timeline = @client.timeline_for(:friends)
57 timeline.should eql(@timeline)
60 it "should generate expected HTTP GET request for :friends case with expected parameters" do
61 @client.should_receive(:create_http_get_request).with(@uris[:friends], @params[:friends]).and_return(@request)
62 timeline = @client.timeline_for(:friends, @params[:friends])
63 timeline.should eql(@timeline)
66 it "should raise an ArgumentError if type given is not valid" do
68 @client.timeline_for(:crap)
69 }.should raise_error(ArgumentError)
72 @client.timeline_for(:crap, @params[:friends])
73 }.should raise_error(ArgumentError)