twitter 4.2.0 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/lib/twitter/api/direct_messages.rb +150 -0
- data/lib/twitter/api/favorites.rb +132 -0
- data/lib/twitter/api/friends_and_followers.rb +259 -0
- data/lib/twitter/api/help.rb +64 -0
- data/lib/twitter/api/lists.rb +570 -0
- data/lib/twitter/api/places_and_geo.rb +121 -0
- data/lib/twitter/api/saved_searches.rb +98 -0
- data/lib/twitter/api/search.rb +37 -0
- data/lib/twitter/api/spam_reporting.rb +30 -0
- data/lib/twitter/api/suggested_users.rb +54 -0
- data/lib/twitter/api/timelines.rb +213 -0
- data/lib/twitter/api/trends.rb +63 -0
- data/lib/twitter/api/tweets.rb +284 -0
- data/lib/twitter/api/undocumented.rb +116 -0
- data/lib/twitter/api/users.rb +427 -0
- data/lib/twitter/api/utils.rb +111 -0
- data/lib/twitter/client.rb +41 -13
- data/lib/twitter/core_ext/enumerable.rb +1 -1
- data/lib/twitter/default.rb +16 -18
- data/lib/twitter/error/already_favorited.rb +1 -1
- data/lib/twitter/error/already_retweeted.rb +1 -1
- data/lib/twitter/profile_banner.rb +18 -0
- data/lib/twitter/version.rb +1 -1
- data/spec/fixtures/profile_banner.json +1 -0
- data/spec/twitter/api/direct_messages_spec.rb +32 -32
- data/spec/twitter/api/favorites_spec.rb +114 -0
- data/spec/twitter/api/{friendships_spec.rb → friends_and_followers_spec.rb} +146 -146
- data/spec/twitter/api/geo_spec.rb +28 -28
- data/spec/twitter/api/help_spec.rb +1 -1
- data/spec/twitter/api/lists_spec.rb +82 -82
- data/spec/twitter/api/saved_searches_spec.rb +1 -1
- data/spec/twitter/api/search_spec.rb +1 -17
- data/spec/twitter/api/{report_spam_spec.rb → spam_reporting_spec.rb} +1 -1
- data/spec/twitter/api/suggested_users_spec.rb +94 -0
- data/spec/twitter/api/timelines_spec.rb +138 -0
- data/spec/twitter/api/trends_spec.rb +1 -1
- data/spec/twitter/api/tweets_spec.rb +249 -0
- data/spec/twitter/api/undocumented_spec.rb +103 -0
- data/spec/twitter/api/users_spec.rb +308 -17
- data/spec/twitter/client_spec.rb +1 -1
- data/spec/twitter/profile_banner_spec.rb +13 -0
- data/twitter.gemspec +3 -2
- metadata +44 -21
- data/lib/twitter/api.rb +0 -2558
- data/spec/twitter/api/account_spec.rb +0 -152
- data/spec/twitter/api/activity_spec.rb +0 -37
- data/spec/twitter/api/blocks_spec.rb +0 -122
- data/spec/twitter/api/statuses_spec.rb +0 -541
@@ -1,67 +1,67 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
describe Twitter::API do
|
3
|
+
describe Twitter::API::PlacesAndGeo do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@client = Twitter::Client.new
|
7
7
|
end
|
8
8
|
|
9
|
-
describe "#
|
9
|
+
describe "#place" do
|
10
10
|
before do
|
11
|
-
stub_get("/1.1/geo/
|
11
|
+
stub_get("/1.1/geo/id/247f43d441defc03.json").to_return(:body => fixture("place.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
12
12
|
end
|
13
13
|
it "requests the correct resource" do
|
14
|
-
@client.
|
15
|
-
expect(a_get("/1.1/geo/
|
14
|
+
@client.place("247f43d441defc03")
|
15
|
+
expect(a_get("/1.1/geo/id/247f43d441defc03.json")).to have_been_made
|
16
16
|
end
|
17
|
-
it "returns
|
18
|
-
|
19
|
-
expect(
|
20
|
-
expect(places.first.name).to eq "Bernal Heights"
|
17
|
+
it "returns a place" do
|
18
|
+
place = @client.place("247f43d441defc03")
|
19
|
+
expect(place.name).to eq "Twitter HQ"
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
24
|
-
describe "#
|
23
|
+
describe "#reverse_geocode" do
|
25
24
|
before do
|
26
|
-
stub_get("/1.1/geo/
|
25
|
+
stub_get("/1.1/geo/reverse_geocode.json").with(:query => {:lat => "37.7821120598956", :long => "-122.400612831116"}).to_return(:body => fixture("places.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
27
26
|
end
|
28
27
|
it "requests the correct resource" do
|
29
|
-
@client.
|
30
|
-
expect(a_get("/1.1/geo/
|
28
|
+
@client.reverse_geocode(:lat => "37.7821120598956", :long => "-122.400612831116")
|
29
|
+
expect(a_get("/1.1/geo/reverse_geocode.json").with(:query => {:lat => "37.7821120598956", :long => "-122.400612831116"})).to have_been_made
|
31
30
|
end
|
32
|
-
it "returns
|
33
|
-
places = @client.
|
31
|
+
it "returns places" do
|
32
|
+
places = @client.reverse_geocode(:lat => "37.7821120598956", :long => "-122.400612831116")
|
34
33
|
expect(places).to be_an Array
|
35
34
|
expect(places.first.name).to eq "Bernal Heights"
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
describe "#
|
38
|
+
describe "#geo_search" do
|
40
39
|
before do
|
41
|
-
stub_get("/1.1/geo/
|
40
|
+
stub_get("/1.1/geo/search.json").with(:query => {:ip => "74.125.19.104"}).to_return(:body => fixture("places.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
42
41
|
end
|
43
42
|
it "requests the correct resource" do
|
44
|
-
@client.
|
45
|
-
expect(a_get("/1.1/geo/
|
43
|
+
@client.geo_search(:ip => "74.125.19.104")
|
44
|
+
expect(a_get("/1.1/geo/search.json").with(:query => {:ip => "74.125.19.104"})).to have_been_made
|
46
45
|
end
|
47
|
-
it "returns places" do
|
48
|
-
places = @client.
|
46
|
+
it "returns nearby places" do
|
47
|
+
places = @client.geo_search(:ip => "74.125.19.104")
|
49
48
|
expect(places).to be_an Array
|
50
49
|
expect(places.first.name).to eq "Bernal Heights"
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
describe "#
|
53
|
+
describe "#similar_places" do
|
55
54
|
before do
|
56
|
-
stub_get("/1.1/geo/
|
55
|
+
stub_get("/1.1/geo/similar_places.json").with(:query => {:lat => "37.7821120598956", :long => "-122.400612831116", :name => "Twitter HQ"}).to_return(:body => fixture("places.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
57
56
|
end
|
58
57
|
it "requests the correct resource" do
|
59
|
-
@client.
|
60
|
-
expect(a_get("/1.1/geo/
|
58
|
+
@client.similar_places(:lat => "37.7821120598956", :long => "-122.400612831116", :name => "Twitter HQ")
|
59
|
+
expect(a_get("/1.1/geo/similar_places.json").with(:query => {:lat => "37.7821120598956", :long => "-122.400612831116", :name => "Twitter HQ"})).to have_been_made
|
61
60
|
end
|
62
|
-
it "returns
|
63
|
-
|
64
|
-
expect(
|
61
|
+
it "returns similar places" do
|
62
|
+
places = @client.similar_places(:lat => "37.7821120598956", :long => "-122.400612831116", :name => "Twitter HQ")
|
63
|
+
expect(places).to be_an Array
|
64
|
+
expect(places.first.name).to eq "Bernal Heights"
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -1,11 +1,27 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
describe Twitter::API do
|
3
|
+
describe Twitter::API::Lists do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@client = Twitter::Client.new
|
7
7
|
end
|
8
8
|
|
9
|
+
describe "#lists" do
|
10
|
+
before do
|
11
|
+
stub_get("/1.1/lists/list.json").to_return(:body => fixture("lists.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
12
|
+
end
|
13
|
+
it "requests the correct resource" do
|
14
|
+
@client.lists
|
15
|
+
expect(a_get("/1.1/lists/list.json")).to have_been_made
|
16
|
+
end
|
17
|
+
it "returns the requested list" do
|
18
|
+
lists = @client.lists
|
19
|
+
expect(lists).to be_an Array
|
20
|
+
expect(lists.first).to be_a Twitter::List
|
21
|
+
expect(lists.first.name).to eq "Rubyists"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
9
25
|
describe "#list_timeline" do
|
10
26
|
context "with a screen name passed" do
|
11
27
|
before do
|
@@ -119,35 +135,6 @@ describe Twitter::API do
|
|
119
135
|
end
|
120
136
|
end
|
121
137
|
|
122
|
-
describe "#subscriptions" do
|
123
|
-
context "with a screen name passed" do
|
124
|
-
before do
|
125
|
-
stub_get("/1.1/lists/subscriptions.json").with(:query => {:screen_name => 'pengwynn', :cursor => "-1"}).to_return(:body => fixture("subscriptions.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
126
|
-
end
|
127
|
-
it "requests the correct resource" do
|
128
|
-
@client.subscriptions("pengwynn")
|
129
|
-
expect(a_get("/1.1/lists/subscriptions.json").with(:query => {:screen_name => 'pengwynn', :cursor => "-1"})).to have_been_made
|
130
|
-
end
|
131
|
-
it "returns the lists the specified user follows" do
|
132
|
-
subscriptions = @client.subscriptions("pengwynn")
|
133
|
-
expect(subscriptions).to be_a Twitter::Cursor
|
134
|
-
expect(subscriptions.lists).to be_an Array
|
135
|
-
expect(subscriptions.lists.first).to be_a Twitter::List
|
136
|
-
expect(subscriptions.lists.first.name).to eq "Rubyists"
|
137
|
-
end
|
138
|
-
end
|
139
|
-
context "without a screen name passed" do
|
140
|
-
before do
|
141
|
-
stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
142
|
-
stub_get("/1.1/lists/subscriptions.json").with(:query => {:cursor => "-1"}).to_return(:body => fixture("subscriptions.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
143
|
-
end
|
144
|
-
it "requests the correct resource" do
|
145
|
-
@client.subscriptions
|
146
|
-
expect(a_get("/1.1/lists/subscriptions.json").with(:query => {:cursor => "-1"})).to have_been_made
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
138
|
describe "#list_subscribe" do
|
152
139
|
context "with a screen name passed" do
|
153
140
|
before do
|
@@ -311,42 +298,6 @@ describe Twitter::API do
|
|
311
298
|
end
|
312
299
|
end
|
313
300
|
|
314
|
-
describe "#list_remove_members" do
|
315
|
-
context "with a screen name passed" do
|
316
|
-
before do
|
317
|
-
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
318
|
-
end
|
319
|
-
it "requests the correct resource" do
|
320
|
-
@client.list_remove_members("sferik", "presidents", [813286, 18755393])
|
321
|
-
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"})).to have_been_made
|
322
|
-
end
|
323
|
-
it "returns the list" do
|
324
|
-
list = @client.list_remove_members("sferik", "presidents", [813286, 18755393])
|
325
|
-
expect(list).to be_a Twitter::List
|
326
|
-
expect(list.name).to eq "presidents"
|
327
|
-
end
|
328
|
-
end
|
329
|
-
context "with a combination of member IDs and member screen names to add" do
|
330
|
-
before do
|
331
|
-
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393", :screen_name => "pengwynn,erebor"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
332
|
-
end
|
333
|
-
it "requests the correct resource" do
|
334
|
-
@client.list_remove_members('sferik', 'presidents', [813286, 'pengwynn', 18755393, 'erebor'])
|
335
|
-
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393", :screen_name => "pengwynn,erebor"})).to have_been_made
|
336
|
-
end
|
337
|
-
end
|
338
|
-
context "without a screen name passed" do
|
339
|
-
before do
|
340
|
-
stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
341
|
-
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
342
|
-
end
|
343
|
-
it "requests the correct resource" do
|
344
|
-
@client.list_remove_members("presidents", [813286, 18755393])
|
345
|
-
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"})).to have_been_made
|
346
|
-
end
|
347
|
-
end
|
348
|
-
end
|
349
|
-
|
350
301
|
describe "#list_member?" do
|
351
302
|
context "with a screen name passed" do
|
352
303
|
before do
|
@@ -583,22 +534,6 @@ describe Twitter::API do
|
|
583
534
|
end
|
584
535
|
end
|
585
536
|
|
586
|
-
describe "#lists" do
|
587
|
-
before do
|
588
|
-
stub_get("/1.1/lists/list.json").to_return(:body => fixture("lists.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
589
|
-
end
|
590
|
-
it "requests the correct resource" do
|
591
|
-
@client.lists
|
592
|
-
expect(a_get("/1.1/lists/list.json")).to have_been_made
|
593
|
-
end
|
594
|
-
it "returns the requested list" do
|
595
|
-
lists = @client.lists
|
596
|
-
expect(lists).to be_an Array
|
597
|
-
expect(lists.first).to be_a Twitter::List
|
598
|
-
expect(lists.first.name).to eq "Rubyists"
|
599
|
-
end
|
600
|
-
end
|
601
|
-
|
602
537
|
describe "#list" do
|
603
538
|
context "with a screen name passed" do
|
604
539
|
before do
|
@@ -664,4 +599,69 @@ describe Twitter::API do
|
|
664
599
|
end
|
665
600
|
end
|
666
601
|
|
602
|
+
describe "#subscriptions" do
|
603
|
+
context "with a screen name passed" do
|
604
|
+
before do
|
605
|
+
stub_get("/1.1/lists/subscriptions.json").with(:query => {:screen_name => 'pengwynn', :cursor => "-1"}).to_return(:body => fixture("subscriptions.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
606
|
+
end
|
607
|
+
it "requests the correct resource" do
|
608
|
+
@client.subscriptions("pengwynn")
|
609
|
+
expect(a_get("/1.1/lists/subscriptions.json").with(:query => {:screen_name => 'pengwynn', :cursor => "-1"})).to have_been_made
|
610
|
+
end
|
611
|
+
it "returns the lists the specified user follows" do
|
612
|
+
subscriptions = @client.subscriptions("pengwynn")
|
613
|
+
expect(subscriptions).to be_a Twitter::Cursor
|
614
|
+
expect(subscriptions.lists).to be_an Array
|
615
|
+
expect(subscriptions.lists.first).to be_a Twitter::List
|
616
|
+
expect(subscriptions.lists.first.name).to eq "Rubyists"
|
617
|
+
end
|
618
|
+
end
|
619
|
+
context "without a screen name passed" do
|
620
|
+
before do
|
621
|
+
stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
622
|
+
stub_get("/1.1/lists/subscriptions.json").with(:query => {:cursor => "-1"}).to_return(:body => fixture("subscriptions.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
623
|
+
end
|
624
|
+
it "requests the correct resource" do
|
625
|
+
@client.subscriptions
|
626
|
+
expect(a_get("/1.1/lists/subscriptions.json").with(:query => {:cursor => "-1"})).to have_been_made
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
describe "#list_remove_members" do
|
632
|
+
context "with a screen name passed" do
|
633
|
+
before do
|
634
|
+
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
635
|
+
end
|
636
|
+
it "requests the correct resource" do
|
637
|
+
@client.list_remove_members("sferik", "presidents", [813286, 18755393])
|
638
|
+
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"})).to have_been_made
|
639
|
+
end
|
640
|
+
it "returns the list" do
|
641
|
+
list = @client.list_remove_members("sferik", "presidents", [813286, 18755393])
|
642
|
+
expect(list).to be_a Twitter::List
|
643
|
+
expect(list.name).to eq "presidents"
|
644
|
+
end
|
645
|
+
end
|
646
|
+
context "with a combination of member IDs and member screen names to add" do
|
647
|
+
before do
|
648
|
+
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393", :screen_name => "pengwynn,erebor"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
649
|
+
end
|
650
|
+
it "requests the correct resource" do
|
651
|
+
@client.list_remove_members('sferik', 'presidents', [813286, 'pengwynn', 18755393, 'erebor'])
|
652
|
+
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393", :screen_name => "pengwynn,erebor"})).to have_been_made
|
653
|
+
end
|
654
|
+
end
|
655
|
+
context "without a screen name passed" do
|
656
|
+
before do
|
657
|
+
stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
658
|
+
stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"}).to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
659
|
+
end
|
660
|
+
it "requests the correct resource" do
|
661
|
+
@client.list_remove_members("presidents", [813286, 18755393])
|
662
|
+
expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:owner_screen_name => 'sferik', :slug => 'presidents', :user_id => "813286,18755393"})).to have_been_made
|
663
|
+
end
|
664
|
+
end
|
665
|
+
end
|
666
|
+
|
667
667
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
describe Twitter::API do
|
3
|
+
describe Twitter::API::Search do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@client = Twitter::Client.new
|
@@ -39,20 +39,4 @@ describe Twitter::API do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe "#phoenix_search" do
|
43
|
-
before do
|
44
|
-
stub_get("/phoenix_search.phoenix").with(:query => {:q => "twitter"}).to_return(:body => fixture("phoenix_search.phoenix"), :headers => {:content_type => "application/json; charset=utf-8"})
|
45
|
-
end
|
46
|
-
it "requests the correct resource" do
|
47
|
-
@client.phoenix_search('twitter')
|
48
|
-
expect(a_get("/phoenix_search.phoenix").with(:query => {:q => "twitter"})).to have_been_made
|
49
|
-
end
|
50
|
-
it "returns recent Tweets related to a query with images and videos embedded" do
|
51
|
-
search = @client.phoenix_search('twitter')
|
52
|
-
expect(search).to be_an Array
|
53
|
-
expect(search.first).to be_a Twitter::Tweet
|
54
|
-
expect(search.first.text).to eq "looking at twitter trends just makes me realize how little i really understand about mankind."
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
42
|
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Twitter::API::SuggestedUsers do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@client = Twitter::Client.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#suggestions" do
|
10
|
+
context "with a category slug passed" do
|
11
|
+
before do
|
12
|
+
stub_get("/1.1/users/suggestions/art-design.json").to_return(:body => fixture("category.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
13
|
+
end
|
14
|
+
it "requests the correct resource" do
|
15
|
+
@client.suggestions("art-design")
|
16
|
+
expect(a_get("/1.1/users/suggestions/art-design.json")).to have_been_made
|
17
|
+
end
|
18
|
+
it "returns the users in a given category of the Twitter suggested user list" do
|
19
|
+
suggestion = @client.suggestions("art-design")
|
20
|
+
expect(suggestion).to be_a Twitter::Suggestion
|
21
|
+
expect(suggestion.name).to eq "Art & Design"
|
22
|
+
expect(suggestion.users).to be_an Array
|
23
|
+
expect(suggestion.users.first).to be_a Twitter::User
|
24
|
+
end
|
25
|
+
end
|
26
|
+
context "without arguments passed" do
|
27
|
+
before do
|
28
|
+
stub_get("/1.1/users/suggestions.json").to_return(:body => fixture("suggestions.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
29
|
+
end
|
30
|
+
it "requests the correct resource" do
|
31
|
+
@client.suggestions
|
32
|
+
expect(a_get("/1.1/users/suggestions.json")).to have_been_made
|
33
|
+
end
|
34
|
+
it "returns the list of suggested user categories" do
|
35
|
+
suggestions = @client.suggestions
|
36
|
+
expect(suggestions).to be_an Array
|
37
|
+
expect(suggestions.first).to be_a Twitter::Suggestion
|
38
|
+
expect(suggestions.first.name).to eq "Art & Design"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#suggest_users" do
|
44
|
+
before do
|
45
|
+
stub_get("/1.1/users/suggestions/art-design/members.json").to_return(:body => fixture("members.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
46
|
+
end
|
47
|
+
it "requests the correct resource" do
|
48
|
+
@client.suggest_users("art-design")
|
49
|
+
expect(a_get("/1.1/users/suggestions/art-design/members.json")).to have_been_made
|
50
|
+
end
|
51
|
+
it "returns users in a given category of the Twitter suggested user list and return their most recent status if they are not a protected user" do
|
52
|
+
suggest_users = @client.suggest_users("art-design")
|
53
|
+
expect(suggest_users).to be_an Array
|
54
|
+
expect(suggest_users.first).to be_a Twitter::User
|
55
|
+
expect(suggest_users.first.name).to eq "OMGFacts"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#following_followers_of" do
|
60
|
+
context "with a screen_name passed" do
|
61
|
+
before do
|
62
|
+
stub_get("/users/following_followers_of.json").with(:query => {:cursor => "-1", :screen_name => "sferik"}).to_return(:body => fixture("users_list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
63
|
+
end
|
64
|
+
it "requests the correct resource" do
|
65
|
+
@client.following_followers_of("sferik")
|
66
|
+
expect(a_get("/users/following_followers_of.json").with(:query => {:cursor => "-1", :screen_name => "sferik"})).to have_been_made
|
67
|
+
end
|
68
|
+
it "returns an array of numeric IDs for every user following the specified user" do
|
69
|
+
following_followers_of = @client.following_followers_of("sferik")
|
70
|
+
expect(following_followers_of).to be_a Twitter::Cursor
|
71
|
+
expect(following_followers_of.users).to be_an Array
|
72
|
+
expect(following_followers_of.users.first).to be_a Twitter::User
|
73
|
+
end
|
74
|
+
end
|
75
|
+
context "without arguments passed" do
|
76
|
+
before do
|
77
|
+
stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
78
|
+
stub_get("/users/following_followers_of.json").with(:query => {:cursor => "-1", :screen_name => "sferik"}).to_return(:body => fixture("users_list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
79
|
+
end
|
80
|
+
it "requests the correct resource" do
|
81
|
+
@client.following_followers_of
|
82
|
+
expect(a_get("/1.1/account/verify_credentials.json")).to have_been_made
|
83
|
+
expect(a_get("/users/following_followers_of.json").with(:query => {:cursor => "-1", :screen_name => "sferik"})).to have_been_made
|
84
|
+
end
|
85
|
+
it "returns an array of numeric IDs for every user following the specified user" do
|
86
|
+
following_followers_of = @client.following_followers_of
|
87
|
+
expect(following_followers_of).to be_a Twitter::Cursor
|
88
|
+
expect(following_followers_of.users).to be_an Array
|
89
|
+
expect(following_followers_of.users.first).to be_a Twitter::User
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Twitter::API::Timelines do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@client = Twitter::Client.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#mentions_timeline" do
|
10
|
+
before do
|
11
|
+
stub_get("/1.1/statuses/mentions_timeline.json").to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
12
|
+
end
|
13
|
+
it "requests the correct resource" do
|
14
|
+
@client.mentions_timeline
|
15
|
+
expect(a_get("/1.1/statuses/mentions_timeline.json")).to have_been_made
|
16
|
+
end
|
17
|
+
it "returns the 20 most recent mentions (status containing @username) for the authenticating user" do
|
18
|
+
tweets = @client.mentions_timeline
|
19
|
+
expect(tweets).to be_an Array
|
20
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
21
|
+
expect(tweets.first.text).to eq "Happy Birthday @imdane. Watch out for those @rally pranksters!"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#user_timeline" do
|
26
|
+
context "with a screen name passed" do
|
27
|
+
before do
|
28
|
+
stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
29
|
+
end
|
30
|
+
it "requests the correct resource" do
|
31
|
+
@client.user_timeline("sferik")
|
32
|
+
expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"})).to have_been_made
|
33
|
+
end
|
34
|
+
it "returns the 20 most recent Tweets posted by the user specified by screen name or user id" do
|
35
|
+
tweets = @client.user_timeline("sferik")
|
36
|
+
expect(tweets).to be_an Array
|
37
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
38
|
+
expect(tweets.first.text).to eq "Happy Birthday @imdane. Watch out for those @rally pranksters!"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
context "without a screen name passed" do
|
42
|
+
before do
|
43
|
+
stub_get("/1.1/statuses/user_timeline.json").to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
44
|
+
end
|
45
|
+
it "requests the correct resource" do
|
46
|
+
@client.user_timeline
|
47
|
+
expect(a_get("/1.1/statuses/user_timeline.json")).to have_been_made
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#retweeted_by_user" do
|
53
|
+
before do
|
54
|
+
stub_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :screen_name => "sferik", :count => "200"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
55
|
+
stub_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :screen_name => "sferik", :count => "200", :max_id => "244102729860009983"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
56
|
+
end
|
57
|
+
it "requests the correct resource" do
|
58
|
+
@client.retweeted_by_user("sferik")
|
59
|
+
expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :screen_name => "sferik", :count => "200"})).to have_been_made
|
60
|
+
expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :screen_name => "sferik", :count => "200", :max_id => "244102729860009983"})).to have_been_made.times(3)
|
61
|
+
end
|
62
|
+
it "returns the 20 most recent retweets posted by the authenticating user" do
|
63
|
+
tweets = @client.retweeted_by_user("sferik")
|
64
|
+
expect(tweets).to be_an Array
|
65
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
66
|
+
expect(tweets.first.text).to eq "RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#retweeted_by_me" do
|
71
|
+
before do
|
72
|
+
stub_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :count => "200"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
73
|
+
stub_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :count => "200", :max_id => "244102729860009983"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
74
|
+
end
|
75
|
+
it "requests the correct resource" do
|
76
|
+
@client.retweeted_by_me
|
77
|
+
expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :count => "200"})).to have_been_made
|
78
|
+
expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:include_rts => "true", :count => "200", :max_id => "244102729860009983"})).to have_been_made.times(3)
|
79
|
+
end
|
80
|
+
it "returns the 20 most recent retweets posted by the authenticating user" do
|
81
|
+
tweets = @client.retweeted_by_me
|
82
|
+
expect(tweets).to be_an Array
|
83
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
84
|
+
expect(tweets.first.text).to eq "RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#home_timeline" do
|
89
|
+
before do
|
90
|
+
stub_get("/1.1/statuses/home_timeline.json").to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
91
|
+
end
|
92
|
+
it "requests the correct resource" do
|
93
|
+
@client.home_timeline
|
94
|
+
expect(a_get("/1.1/statuses/home_timeline.json")).to have_been_made
|
95
|
+
end
|
96
|
+
it "returns the 20 most recent Tweets, including retweets if they exist, posted by the authenticating user and the user's they follow" do
|
97
|
+
tweets = @client.home_timeline
|
98
|
+
expect(tweets).to be_an Array
|
99
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
100
|
+
expect(tweets.first.text).to eq "Happy Birthday @imdane. Watch out for those @rally pranksters!"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "#retweeted_to_me" do
|
105
|
+
before do
|
106
|
+
stub_get("/1.1/statuses/home_timeline.json").with(:query => {:include_rts => "true", :count => "200"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
107
|
+
stub_get("/1.1/statuses/home_timeline.json").with(:query => {:include_rts => "true", :count => "200", :max_id => "244102729860009983"}).to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
108
|
+
end
|
109
|
+
it "requests the correct resource" do
|
110
|
+
@client.retweeted_to_me
|
111
|
+
expect(stub_get("/1.1/statuses/home_timeline.json").with(:query => {:include_rts => "true", :count => "200"})).to have_been_made
|
112
|
+
expect(stub_get("/1.1/statuses/home_timeline.json").with(:query => {:include_rts => "true", :count => "200", :max_id => "244102729860009983"})).to have_been_made.times(3)
|
113
|
+
end
|
114
|
+
it "returns the 20 most recent retweets posted by users the authenticating user follow" do
|
115
|
+
tweets = @client.retweeted_to_me
|
116
|
+
expect(tweets).to be_an Array
|
117
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
118
|
+
expect(tweets.first.text).to eq "RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "#retweets_of_me" do
|
123
|
+
before do
|
124
|
+
stub_get("/1.1/statuses/retweets_of_me.json").to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
|
125
|
+
end
|
126
|
+
it "requests the correct resource" do
|
127
|
+
@client.retweets_of_me
|
128
|
+
expect(a_get("/1.1/statuses/retweets_of_me.json")).to have_been_made
|
129
|
+
end
|
130
|
+
it "returns the 20 most recent tweets of the authenticated user that have been retweeted by others" do
|
131
|
+
tweets = @client.retweets_of_me
|
132
|
+
expect(tweets).to be_an Array
|
133
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
134
|
+
expect(tweets.first.text).to eq "Happy Birthday @imdane. Watch out for those @rally pranksters!"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|