twitter4r 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/twitter/client/base.rb +81 -0
- data/lib/twitter/client/friendship.rb +34 -0
- data/lib/twitter/client/messaging.rb +61 -0
- data/lib/twitter/client/status.rb +39 -0
- data/lib/twitter/client/timeline.rb +62 -0
- data/lib/twitter/client/user.rb +33 -0
- data/lib/twitter/client.rb +18 -0
- data/lib/twitter/config.rb +69 -0
- data/lib/twitter/console.rb +28 -0
- data/lib/twitter/core.rb +109 -171
- data/lib/twitter/ext/stdlib.rb +32 -0
- data/lib/twitter/ext.rb +2 -0
- data/lib/twitter/extras.rb +39 -0
- data/lib/twitter/meta.rb +16 -1
- data/lib/twitter/model.rb +331 -0
- data/lib/twitter/version.rb +7 -2
- data/lib/twitter.rb +16 -5
- data/spec/spec_helper.rb +47 -4
- data/spec/twitter/client/base_spec.rb +232 -0
- data/spec/twitter/client/friendship_spec.rb +70 -0
- data/spec/twitter/client/messaging_spec.rb +92 -0
- data/spec/twitter/client/status_spec.rb +85 -0
- data/spec/twitter/client/timeline_spec.rb +69 -0
- data/spec/twitter/client/user_spec.rb +141 -0
- data/spec/twitter/client_spec.rb +2 -0
- data/spec/twitter/config_spec.rb +86 -0
- data/spec/twitter/console_spec.rb +15 -0
- data/spec/twitter/core_spec.rb +32 -353
- data/spec/twitter/deprecated_spec.rb +177 -0
- data/spec/twitter/ext/stdlib_spec.rb +42 -0
- data/spec/twitter/extras_spec.rb +46 -0
- data/spec/twitter/meta_spec.rb +5 -4
- data/spec/twitter/model_spec.rb +458 -0
- data/spec/twitter/version_spec.rb +2 -2
- metadata +46 -10
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
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
|
32
|
+
|
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
|
44
|
+
|
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
|
50
|
+
|
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
|
+
after(:each) do
|
68
|
+
nilize(@twitter, @id, @uris, @request, @response, @connection)
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
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
|
+
after(:each) do
|
36
|
+
nilize(@twitter, @uris, @request, @response, @connection, @messages)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Twitter::Client, "#message" do
|
41
|
+
before(:each) do
|
42
|
+
@twitter = client_context
|
43
|
+
@attributes = {
|
44
|
+
:id => 34324,
|
45
|
+
:text => 'Randy, are you coming over later?',
|
46
|
+
:sender => {:id => 123, :screen_name => 'mylogin'},
|
47
|
+
:recipient => {:id => 1234, :screen_name => 'randy'},
|
48
|
+
}
|
49
|
+
@message = Twitter::Message.new(@attributes)
|
50
|
+
@uris = Twitter::Client.class_eval("@@MESSAGING_URIS")
|
51
|
+
@request = mas_net_http_get(:basic_auth => nil)
|
52
|
+
@json = JSON.unparse(@attributes)
|
53
|
+
@response = mas_net_http_response(:success, @json)
|
54
|
+
@connection = mas_net_http(@response)
|
55
|
+
Net::HTTP.stub!(:new).and_return(@connection)
|
56
|
+
Twitter::Message.stub!(:unmarshal).and_return(@message)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should invoke #http_connect with expected arguments for :post case" do
|
60
|
+
@twitter.should_receive(:http_connect).with({:text => @message.text, :user => @message.recipient.to_i}.to_http_str).and_return(@response)
|
61
|
+
@twitter.message(:post, @message.text, @message.recipient)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should create expected HTTP POST request for :post case" do
|
65
|
+
@twitter.should_receive(:create_http_post_request).with(@uris[:post]).and_return(@request)
|
66
|
+
@twitter.message(:post, @message.text, @message.recipient)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should bless returned Twitter::Message object for :post case" do
|
70
|
+
@twitter.should_receive(:bless_model).with(@message)
|
71
|
+
@twitter.message(:post, @message.text, @message.recipient)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should create expected HTTP DELETE request for :delete case" do
|
75
|
+
@twitter.should_receive(:create_http_delete_request).with(@uris[:delete], {:id => @message.to_i}).and_return(@request)
|
76
|
+
@twitter.message(:delete, @message)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should bless returned Twitter::Message object for :delete case" do
|
80
|
+
@twitter.should_receive(:bless_model).with(@message)
|
81
|
+
@twitter.message(:delete, @message)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should invoke #to_i on message object passed in for :delete case" do
|
85
|
+
@message.should_receive(:to_i).and_return(@message.id)
|
86
|
+
@twitter.message(:delete, @message)
|
87
|
+
end
|
88
|
+
|
89
|
+
after(:each) do
|
90
|
+
nilize(@twitter, @uris, @request, @response, @connection, @sender, @recipient, @message, @attributes)
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Twitter::Client, "#status" do
|
4
|
+
before(:each) do
|
5
|
+
@twitter = client_context
|
6
|
+
@message = 'This is my unique message'
|
7
|
+
@uris = Twitter::Client.class_eval("@@STATUS_URIS")
|
8
|
+
@options = {:id => 666666}
|
9
|
+
@request = mas_net_http_get(:basic_auth => nil)
|
10
|
+
@response = mas_net_http_response(:success, '{}')
|
11
|
+
@connection = mas_net_http(@response)
|
12
|
+
@float = 43.3434
|
13
|
+
@status = Twitter::Status.new(:id => 2349343)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return nil if nil is passed as value argument for :get case" do
|
17
|
+
status = @twitter.status(:get, nil)
|
18
|
+
status.should be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not call @twitter#http_connect when passing nil for value argument in :get case" do
|
22
|
+
@twitter.should_not_receive(:http_connect)
|
23
|
+
@twitter.status(:get, nil)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should create expected HTTP GET request for :get case" do
|
27
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:get], @options).and_return(@request)
|
28
|
+
@twitter.status(:get, @options[:id])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should invoke @twitter#create_http_get_request with given parameters equivalent to {:id => value.to_i} for :get case" do
|
32
|
+
# Float case
|
33
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:get], {:id => @float.to_i}).and_return(@request)
|
34
|
+
@twitter.status(:get, @float)
|
35
|
+
|
36
|
+
# Twitter::Status object case
|
37
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:get], {:id => @status.to_i}).and_return(@request)
|
38
|
+
@twitter.status(:get, @status)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return nil if nil is passed as value argument for :post case" do
|
42
|
+
status = @twitter.status(:post, nil)
|
43
|
+
status.should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should not call @twitter#http_connect when passing nil for value argument in :post case" do
|
47
|
+
@twitter.should_not_receive(:http_connect)
|
48
|
+
@twitter.status(:post, nil)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should create expected HTTP POST request for :post case" do
|
52
|
+
@twitter.should_receive(:create_http_post_request).with(@uris[:post]).and_return(@request)
|
53
|
+
@connection.should_receive(:request).with(@request, {:status => @message}.to_http_str).and_return(@response)
|
54
|
+
@twitter.status(:post, @message)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return nil if nil is passed as value argument for :delete case" do
|
58
|
+
status = @twitter.status(:delete, nil)
|
59
|
+
status.should be_nil
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should not call @twitter#http_connect when passing nil for value argument in :delete case" do
|
63
|
+
@twitter.should_not_receive(:http_connect)
|
64
|
+
@twitter.status(:delete, nil)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should create expected HTTP DELETE request for :delete case" do
|
68
|
+
@twitter.should_receive(:create_http_delete_request).with(@uris[:delete], @options).and_return(@request)
|
69
|
+
@twitter.status(:delete, @options[:id])
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should invoke @twitter#create_http_get_request with given parameters equivalent to {:id => value.to_i} for :delete case" do
|
73
|
+
# Float case
|
74
|
+
@twitter.should_receive(:create_http_delete_request).with(@uris[:delete], {:id => @float.to_i}).and_return(@request)
|
75
|
+
@twitter.status(:delete, @float)
|
76
|
+
|
77
|
+
# Twitter::Status object case
|
78
|
+
@twitter.should_receive(:create_http_delete_request).with(@uris[:delete], {:id => @status.to_i}).and_return(@request)
|
79
|
+
@twitter.status(:delete, @status)
|
80
|
+
end
|
81
|
+
|
82
|
+
after(:each) do
|
83
|
+
nilize(@twitter)
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Twitter::Client, "Timeline API" do
|
4
|
+
before(:each) 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)
|
9
|
+
@timeline = [@status]
|
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)
|
14
|
+
@params = {
|
15
|
+
:public => {:since_id => 3249328},
|
16
|
+
:friends => {:id => 'myfriend'},
|
17
|
+
:user => {:id => 'auser'},
|
18
|
+
:me => {},
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should respond to instance method #timeline_for" do
|
23
|
+
@client.should respond_to(:timeline_for)
|
24
|
+
end
|
25
|
+
|
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)
|
29
|
+
end
|
30
|
+
|
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)
|
34
|
+
count = 0
|
35
|
+
@client.timeline_for(:public) do |status|
|
36
|
+
status.should eql(@status)
|
37
|
+
count += 1
|
38
|
+
end
|
39
|
+
count.should eql(@timeline.size)
|
40
|
+
end
|
41
|
+
|
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)
|
46
|
+
end
|
47
|
+
|
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)
|
52
|
+
end
|
53
|
+
|
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)
|
58
|
+
end
|
59
|
+
|
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)
|
64
|
+
end
|
65
|
+
|
66
|
+
after(:each) do
|
67
|
+
nilize(@client)
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Twitter::Client, "#user(id, :info)" do
|
4
|
+
before(:each) do
|
5
|
+
@twitter = client_context
|
6
|
+
@id = 395783
|
7
|
+
@screen_name = 'boris_johnson_is_funny_as_hell'
|
8
|
+
@user = Twitter::User.new(
|
9
|
+
:id => @id,
|
10
|
+
:screen_name => @screen_name,
|
11
|
+
:location => 'London'
|
12
|
+
)
|
13
|
+
@json = JSON.unparse(@user.to_hash)
|
14
|
+
@request = mas_net_http_get(:basic_auth => nil)
|
15
|
+
@response = mas_net_http_response(:success, @json)
|
16
|
+
@connection = mas_net_http(@response)
|
17
|
+
@uris = Twitter::Client.class_eval("@@USER_URIS")
|
18
|
+
@twitter.stub!(:create_http_get_request).and_return(@request)
|
19
|
+
Twitter::User.stub!(:unmarshal).and_return(@user)
|
20
|
+
Net::HTTP.stub!(:new).and_return(@connection)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should create expected HTTP GET request when giving numeric user id" do
|
24
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:info], {:id => @id}).and_return(@request)
|
25
|
+
@twitter.user(@id)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should create expected HTTP GET request when giving screen name" do
|
29
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:info], {:id => @screen_name}).and_return(@request)
|
30
|
+
@twitter.user(@screen_name)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should bless model returned when giving numeric user id" do
|
34
|
+
@twitter.should_receive(:bless_model).with(@user).and_return(@model)
|
35
|
+
@twitter.user(@id)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should bless model returned when giving screen name" do
|
39
|
+
@twitter.should_receive(:bless_model).with(@user).and_return(@model)
|
40
|
+
@twitter.user(@screen_name)
|
41
|
+
end
|
42
|
+
|
43
|
+
after(:each) do
|
44
|
+
nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# TODO: Add specs for new Twitter::Client#user(id, :friends) and
|
49
|
+
# Twitter::Client#user(id, :followers) use cases.
|
50
|
+
describe Twitter::Client, "#user(id, :friends)" do
|
51
|
+
before(:each) do
|
52
|
+
@twitter = client_context
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should " do
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
after(:each) do
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe Twitter::Client, "#my(:info)" do
|
65
|
+
before(:each) do
|
66
|
+
@twitter = client_context
|
67
|
+
@screen_name = @twitter.instance_eval("@login")
|
68
|
+
@user = Twitter::User.new(
|
69
|
+
:id => 2394393,
|
70
|
+
:screen_name => @screen_name,
|
71
|
+
:location => 'Glamorous Urbana'
|
72
|
+
)
|
73
|
+
@json = JSON.unparse(@user.to_hash)
|
74
|
+
@request = mas_net_http_get(:basic_auth => nil)
|
75
|
+
@response = mas_net_http_response(:success, @json)
|
76
|
+
@connection = mas_net_http(@response)
|
77
|
+
@uris = Twitter::Client.class_eval("@@USER_URIS")
|
78
|
+
@twitter.stub!(:create_http_get_request).and_return(@request)
|
79
|
+
Net::HTTP.stub!(:new).and_return(@connection)
|
80
|
+
Twitter::User.stub!(:unmarshal).and_return(@user)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should create expected HTTP GET request" do
|
84
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:info], :id => @screen_name).and_return(@request)
|
85
|
+
@twitter.my(:info)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should bless the model object returned" do
|
89
|
+
@twitter.should_receive(:bless_models).with(@user).and_return(@user)
|
90
|
+
@twitter.my(:info)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should return expected user object" do
|
94
|
+
user = @twitter.my(:info)
|
95
|
+
user.should eql(@user)
|
96
|
+
end
|
97
|
+
|
98
|
+
after(:each) do
|
99
|
+
nilize(@request, @response, @connection, @twitter, @user, @screen_name)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe Twitter::Client, "#my(:friends)" do
|
104
|
+
before(:each) do
|
105
|
+
@twitter = client_context
|
106
|
+
@screen_name = @twitter.instance_eval("@login")
|
107
|
+
@friends = [
|
108
|
+
Twitter::User.new(:screen_name => 'lucy_snowe'),
|
109
|
+
Twitter::User.new(:screen_name => 'jane_eyre'),
|
110
|
+
Twitter::User.new(:screen_name => 'tess_derbyfield'),
|
111
|
+
Twitter::User.new(:screen_name => 'elizabeth_jane_newson'),
|
112
|
+
]
|
113
|
+
@json = JSON.unparse(@friends.collect {|f| f.to_hash })
|
114
|
+
@request = mas_net_http_get(:basic_auth => nil)
|
115
|
+
@response = mas_net_http_response(:success, @json)
|
116
|
+
@connection = mas_net_http(@response)
|
117
|
+
@uris = Twitter::Client.class_eval("@@USER_URIS")
|
118
|
+
@twitter.stub!(:create_http_get_request).and_return(@request)
|
119
|
+
Twitter::User.stub!(:unmarshal).and_return(@friends)
|
120
|
+
Net::HTTP.stub!(:new).and_return(@connection)
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should create expected HTTP GET request" do
|
124
|
+
@twitter.should_receive(:create_http_get_request).with(@uris[:friends], :id => @screen_name).and_return(@request)
|
125
|
+
@twitter.my(:friends)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should bless models returned" do
|
129
|
+
@twitter.should_receive(:bless_models).with(@friends).and_return(@friends)
|
130
|
+
@twitter.my(:friends)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should return expected Array of friends" do
|
134
|
+
friends = @twitter.my(:friends)
|
135
|
+
friends.should eql(@friends)
|
136
|
+
end
|
137
|
+
|
138
|
+
after(:each) do
|
139
|
+
nilize(@request, @response, @connection, @twitter, @friends, @screen_name)
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Twitter::Client, ".configure" do
|
4
|
+
it "should respond to :configure class method" do
|
5
|
+
Twitter::Client.respond_to?(:configure).should be(true)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should not accept calls that do not specify blocks" do
|
9
|
+
lambda {
|
10
|
+
Twitter::Client.configure()
|
11
|
+
}.should raise_error(ArgumentError)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Twitter::Client, ".configure with mocked @config" do
|
16
|
+
before(:each) do
|
17
|
+
@block_invoked = false
|
18
|
+
@conf_yielded = false
|
19
|
+
@conf = mock(Twitter::Config)
|
20
|
+
@block = Proc.new do |conf|
|
21
|
+
@block_invoked = true
|
22
|
+
@conf_yielded = true if conf.is_a?(Twitter::Config)
|
23
|
+
end
|
24
|
+
Twitter::Config.stub!(:new).and_return(@conf)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not raise an error when passing block" do
|
28
|
+
lambda {
|
29
|
+
Twitter::Client.configure(&@block)
|
30
|
+
}.should_not raise_error
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should yield a Twitter::Client object to block" do
|
34
|
+
Twitter::Client.configure(&@block)
|
35
|
+
@block_invoked.should be(true)
|
36
|
+
@conf_yielded.should be(true)
|
37
|
+
end
|
38
|
+
|
39
|
+
after(:each) do
|
40
|
+
nilize(@block, @block_invoked, @conf, @conf_yielded)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe Twitter::Config, "#eql?" do
|
45
|
+
before(:each) do
|
46
|
+
@protocol = :ssl
|
47
|
+
@host = 'twitter.com'
|
48
|
+
@port = 443
|
49
|
+
@proxy_host = 'myproxy.host'
|
50
|
+
@proxy_port = 8080
|
51
|
+
attrs = {
|
52
|
+
:protocol => @protocol,
|
53
|
+
:host => @host,
|
54
|
+
:port => @port,
|
55
|
+
:proxy_host => @proxy_host,
|
56
|
+
:proxy_port => @proxy_port,
|
57
|
+
}
|
58
|
+
@obj = stubbed_twitter_config(Twitter::Config.new, attrs)
|
59
|
+
@other = stubbed_twitter_config(Twitter::Config.new, attrs)
|
60
|
+
|
61
|
+
@different = stubbed_twitter_config(Twitter::Config.new, attrs.merge(:proxy_host => 'different.proxy'))
|
62
|
+
@same = @obj
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return true for two logically equivalent objects" do
|
66
|
+
@obj.should be_eql(@other)
|
67
|
+
@other.should be_eql(@obj)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should return false for two logically different objects" do
|
71
|
+
@obj.should_not be_eql(@different)
|
72
|
+
@different.should_not be_eql(@obj)
|
73
|
+
@other.should_not be_eql(@different)
|
74
|
+
@different.should_not be_eql(@other)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should return true for references to the same object in memory" do
|
78
|
+
@obj.should eql(@same)
|
79
|
+
@same.should eql(@obj)
|
80
|
+
@other.should eql(@other)
|
81
|
+
end
|
82
|
+
|
83
|
+
after(:each) do
|
84
|
+
nilize(@protocol, @host, @port, @proxy_host, @proxy_port, @obj, @other, @different, @same)
|
85
|
+
end
|
86
|
+
end
|