twitter 4.8.1 → 5.0.0.rc.1
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.tar.gz.sig +0 -0
- data/CHANGELOG.md +30 -0
- data/LICENSE.md +1 -1
- data/README.md +386 -266
- data/lib/twitter.rb +4 -39
- data/lib/twitter/arguments.rb +11 -0
- data/lib/twitter/base.rb +89 -68
- data/lib/twitter/client.rb +69 -110
- data/lib/twitter/configuration.rb +7 -3
- data/lib/twitter/creatable.rb +2 -4
- data/lib/twitter/cursor.rb +50 -42
- data/lib/twitter/direct_message.rb +2 -11
- data/lib/twitter/entity/uri.rb +13 -0
- data/lib/twitter/enumerable.rb +15 -0
- data/lib/twitter/error.rb +55 -7
- data/lib/twitter/error/already_favorited.rb +1 -1
- data/lib/twitter/error/already_posted.rb +10 -0
- data/lib/twitter/error/already_retweeted.rb +1 -1
- data/lib/twitter/error/bad_gateway.rb +2 -3
- data/lib/twitter/error/bad_request.rb +2 -2
- data/lib/twitter/error/forbidden.rb +2 -2
- data/lib/twitter/error/gateway_timeout.rb +2 -3
- data/lib/twitter/error/internal_server_error.rb +2 -3
- data/lib/twitter/error/not_acceptable.rb +2 -2
- data/lib/twitter/error/not_found.rb +2 -2
- data/lib/twitter/error/service_unavailable.rb +2 -3
- data/lib/twitter/error/too_many_requests.rb +2 -2
- data/lib/twitter/error/unauthorized.rb +2 -2
- data/lib/twitter/error/unprocessable_entity.rb +2 -2
- data/lib/twitter/factory.rb +2 -8
- data/lib/twitter/geo_factory.rb +2 -2
- data/lib/twitter/geo_results.rb +36 -0
- data/lib/twitter/identity.rb +0 -22
- data/lib/twitter/list.rb +18 -4
- data/lib/twitter/media/photo.rb +3 -3
- data/lib/twitter/media_factory.rb +2 -2
- data/lib/twitter/null_object.rb +24 -0
- data/lib/twitter/oembed.rb +3 -2
- data/lib/twitter/place.rb +15 -9
- data/lib/twitter/profile_banner.rb +5 -3
- data/lib/twitter/rate_limit.rb +1 -17
- data/lib/twitter/relationship.rb +2 -10
- data/lib/twitter/rest/api/direct_messages.rb +135 -0
- data/lib/twitter/rest/api/favorites.rb +120 -0
- data/lib/twitter/rest/api/friends_and_followers.rb +290 -0
- data/lib/twitter/rest/api/help.rb +58 -0
- data/lib/twitter/rest/api/lists.rb +491 -0
- data/lib/twitter/rest/api/oauth.rb +45 -0
- data/lib/twitter/rest/api/places_and_geo.rb +104 -0
- data/lib/twitter/rest/api/saved_searches.rb +91 -0
- data/lib/twitter/rest/api/search.rb +37 -0
- data/lib/twitter/rest/api/spam_reporting.rb +29 -0
- data/lib/twitter/rest/api/suggested_users.rb +51 -0
- data/lib/twitter/rest/api/timelines.rb +202 -0
- data/lib/twitter/rest/api/trends.rb +58 -0
- data/lib/twitter/rest/api/tweets.rb +293 -0
- data/lib/twitter/rest/api/undocumented.rb +52 -0
- data/lib/twitter/rest/api/users.rb +383 -0
- data/lib/twitter/rest/api/utils.rb +219 -0
- data/lib/twitter/rest/client.rb +193 -0
- data/lib/twitter/rest/request/multipart_with_file.rb +36 -0
- data/lib/twitter/rest/response/parse_json.rb +27 -0
- data/lib/twitter/{response → rest/response}/raise_error.rb +8 -11
- data/lib/twitter/search_results.rb +33 -21
- data/lib/twitter/settings.rb +1 -6
- data/lib/twitter/size.rb +1 -1
- data/lib/twitter/streaming/client.rb +77 -0
- data/lib/twitter/streaming/connection.rb +22 -0
- data/lib/twitter/streaming/response.rb +30 -0
- data/lib/twitter/suggestion.rb +4 -2
- data/lib/twitter/token.rb +8 -0
- data/lib/twitter/trend.rb +2 -1
- data/lib/twitter/trend_results.rb +59 -0
- data/lib/twitter/tweet.rb +41 -85
- data/lib/twitter/user.rb +51 -41
- data/lib/twitter/version.rb +4 -4
- data/spec/fixtures/already_posted.json +1 -0
- data/spec/fixtures/ids_list.json +1 -1
- data/spec/fixtures/ids_list2.json +1 -1
- data/spec/fixtures/search.json +1 -1
- data/spec/fixtures/search_malformed.json +1 -1
- data/spec/fixtures/track_streaming.json +3 -0
- data/spec/helper.rb +8 -13
- data/spec/twitter/base_spec.rb +25 -99
- data/spec/twitter/configuration_spec.rb +1 -1
- data/spec/twitter/cursor_spec.rb +13 -31
- data/spec/twitter/direct_message_spec.rb +41 -8
- data/spec/twitter/entity/uri_spec.rb +74 -0
- data/spec/twitter/error_spec.rb +59 -11
- data/spec/twitter/geo/point_spec.rb +1 -1
- data/spec/twitter/geo_factory_spec.rb +3 -3
- data/spec/twitter/geo_results_spec.rb +35 -0
- data/spec/twitter/identifiable_spec.rb +0 -21
- data/spec/twitter/list_spec.rb +51 -8
- data/spec/twitter/media/photo_spec.rb +118 -3
- data/spec/twitter/media_factory_spec.rb +2 -2
- data/spec/twitter/null_object_spec.rb +26 -0
- data/spec/twitter/oembed_spec.rb +69 -45
- data/spec/twitter/place_spec.rb +68 -12
- data/spec/twitter/profile_banner_spec.rb +1 -1
- data/spec/twitter/rate_limit_spec.rb +12 -12
- data/spec/twitter/relationship_spec.rb +31 -9
- data/spec/twitter/{api → rest/api}/direct_messages_spec.rb +22 -9
- data/spec/twitter/{api → rest/api}/favorites_spec.rb +80 -7
- data/spec/twitter/{api → rest/api}/friends_and_followers_spec.rb +104 -65
- data/spec/twitter/{api → rest/api}/geo_spec.rb +10 -10
- data/spec/twitter/{api → rest/api}/help_spec.rb +6 -6
- data/spec/twitter/{api → rest/api}/lists_spec.rb +77 -56
- data/spec/twitter/{api → rest/api}/oauth_spec.rb +6 -6
- data/spec/twitter/{api → rest/api}/saved_searches_spec.rb +7 -7
- data/spec/twitter/{api → rest/api}/search_spec.rb +8 -9
- data/spec/twitter/{api → rest/api}/spam_reporting_spec.rb +3 -3
- data/spec/twitter/{api → rest/api}/suggested_users_spec.rb +5 -5
- data/spec/twitter/{api → rest/api}/timelines_spec.rb +9 -9
- data/spec/twitter/{api → rest/api}/trends_spec.rb +6 -6
- data/spec/twitter/rest/api/tweets_spec.rb +503 -0
- data/spec/twitter/{api → rest/api}/undocumented_spec.rb +19 -45
- data/spec/twitter/{api → rest/api}/users_spec.rb +60 -35
- data/spec/twitter/rest/client_spec.rb +193 -0
- data/spec/twitter/saved_search_spec.rb +11 -0
- data/spec/twitter/search_results_spec.rb +29 -42
- data/spec/twitter/settings_spec.rb +17 -6
- data/spec/twitter/streaming/client_spec.rb +75 -0
- data/spec/twitter/token_spec.rb +16 -0
- data/spec/twitter/trend_results_spec.rb +89 -0
- data/spec/twitter/trend_spec.rb +23 -0
- data/spec/twitter/tweet_spec.rb +122 -115
- data/spec/twitter/user_spec.rb +136 -77
- data/spec/twitter_spec.rb +0 -119
- data/twitter.gemspec +8 -5
- metadata +148 -141
- metadata.gz.sig +0 -0
- data/lib/twitter/action/favorite.rb +0 -19
- data/lib/twitter/action/follow.rb +0 -30
- data/lib/twitter/action/list_member_added.rb +0 -39
- data/lib/twitter/action/mention.rb +0 -46
- data/lib/twitter/action/reply.rb +0 -27
- data/lib/twitter/action/retweet.rb +0 -27
- data/lib/twitter/action/tweet.rb +0 -20
- data/lib/twitter/action_factory.rb +0 -22
- data/lib/twitter/api/arguments.rb +0 -13
- data/lib/twitter/api/direct_messages.rb +0 -148
- data/lib/twitter/api/favorites.rb +0 -126
- data/lib/twitter/api/friends_and_followers.rb +0 -334
- data/lib/twitter/api/help.rb +0 -64
- data/lib/twitter/api/lists.rb +0 -618
- data/lib/twitter/api/oauth.rb +0 -44
- data/lib/twitter/api/places_and_geo.rb +0 -121
- data/lib/twitter/api/saved_searches.rb +0 -99
- data/lib/twitter/api/search.rb +0 -37
- data/lib/twitter/api/spam_reporting.rb +0 -30
- data/lib/twitter/api/suggested_users.rb +0 -55
- data/lib/twitter/api/timelines.rb +0 -214
- data/lib/twitter/api/trends.rb +0 -63
- data/lib/twitter/api/tweets.rb +0 -304
- data/lib/twitter/api/undocumented.rb +0 -97
- data/lib/twitter/api/users.rb +0 -439
- data/lib/twitter/api/utils.rb +0 -187
- data/lib/twitter/configurable.rb +0 -96
- data/lib/twitter/default.rb +0 -102
- data/lib/twitter/entity/url.rb +0 -9
- data/lib/twitter/error/client_error.rb +0 -35
- data/lib/twitter/error/decode_error.rb +0 -9
- data/lib/twitter/error/identity_map_key_error.rb +0 -9
- data/lib/twitter/error/server_error.rb +0 -28
- data/lib/twitter/exceptable.rb +0 -36
- data/lib/twitter/identity_map.rb +0 -22
- data/lib/twitter/request/multipart_with_file.rb +0 -34
- data/lib/twitter/response/parse_json.rb +0 -25
- data/spec/fixtures/about_me.json +0 -1
- data/spec/fixtures/activity_summary.json +0 -1
- data/spec/fixtures/bad_gateway.json +0 -1
- data/spec/fixtures/bad_request.json +0 -1
- data/spec/fixtures/by_friends.json +0 -1
- data/spec/fixtures/end_session.json +0 -1
- data/spec/fixtures/forbidden.json +0 -1
- data/spec/fixtures/internal_server_error.json +0 -1
- data/spec/fixtures/not_acceptable.json +0 -1
- data/spec/fixtures/phoenix_search.phoenix +0 -1
- data/spec/fixtures/resolve.json +0 -1
- data/spec/fixtures/service_unavailable.json +0 -1
- data/spec/fixtures/totals.json +0 -1
- data/spec/fixtures/trends.json +0 -1
- data/spec/fixtures/unauthorized.json +0 -1
- data/spec/fixtures/video_facets.json +0 -1
- data/spec/twitter/action/favorite_spec.rb +0 -29
- data/spec/twitter/action/follow_spec.rb +0 -29
- data/spec/twitter/action/list_member_added_spec.rb +0 -41
- data/spec/twitter/action/mention_spec.rb +0 -52
- data/spec/twitter/action/reply_spec.rb +0 -41
- data/spec/twitter/action/retweet_spec.rb +0 -41
- data/spec/twitter/action_factory_spec.rb +0 -35
- data/spec/twitter/action_spec.rb +0 -16
- data/spec/twitter/api/tweets_spec.rb +0 -285
- data/spec/twitter/client_spec.rb +0 -223
- data/spec/twitter/error/client_error_spec.rb +0 -23
- data/spec/twitter/error/server_error_spec.rb +0 -20
@@ -31,4 +31,15 @@ describe Twitter::SavedSearch do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
describe "#created?" do
|
35
|
+
it "returns true when created_at is set" do
|
36
|
+
saved_search = Twitter::SavedSearch.new(:id => 16129012, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
|
37
|
+
expect(saved_search.created?).to be_true
|
38
|
+
end
|
39
|
+
it "returns false when created_at is not set" do
|
40
|
+
saved_search = Twitter::SavedSearch.new(:id => 16129012)
|
41
|
+
expect(saved_search.created?).to be_false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
34
45
|
end
|
@@ -2,15 +2,21 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe Twitter::SearchResults do
|
4
4
|
|
5
|
-
describe "#
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
describe "#each" do
|
6
|
+
before do
|
7
|
+
@search_results = Twitter::SearchResults.new(:statuses => [{:id => 1}, {:id => 2}, {:id => 3}, {:id => 4}, {:id => 5}, {:id => 6}])
|
8
|
+
end
|
9
|
+
it "iterates" do
|
10
|
+
count = 0
|
11
|
+
@search_results.each{count += 1}
|
12
|
+
expect(count).to eq(6)
|
13
|
+
end
|
14
|
+
context "with start" do
|
15
|
+
it "iterates" do
|
16
|
+
count = 0
|
17
|
+
@search_results.each(5){count += 1}
|
18
|
+
expect(count).to eq(1)
|
19
|
+
end
|
14
20
|
end
|
15
21
|
end
|
16
22
|
|
@@ -18,7 +24,7 @@ describe Twitter::SearchResults do
|
|
18
24
|
it "returns a number of seconds" do
|
19
25
|
completed_in = Twitter::SearchResults.new(:search_metadata => {:completed_in => 0.029}).completed_in
|
20
26
|
expect(completed_in).to be_a Float
|
21
|
-
expect(completed_in).to eq
|
27
|
+
expect(completed_in).to eq(0.029)
|
22
28
|
end
|
23
29
|
it "is nil when not set" do
|
24
30
|
completed_in = Twitter::SearchResults.new.completed_in
|
@@ -30,7 +36,7 @@ describe Twitter::SearchResults do
|
|
30
36
|
it "returns an ID" do
|
31
37
|
max_id = Twitter::SearchResults.new(:search_metadata => {:max_id => 250126199840518145}).max_id
|
32
38
|
expect(max_id).to be_an Integer
|
33
|
-
expect(max_id).to eq
|
39
|
+
expect(max_id).to eq(250126199840518145)
|
34
40
|
end
|
35
41
|
it "is nil when not set" do
|
36
42
|
max_id = Twitter::SearchResults.new.max_id
|
@@ -42,7 +48,7 @@ describe Twitter::SearchResults do
|
|
42
48
|
it "returns page number" do
|
43
49
|
page = Twitter::SearchResults.new(:search_metadata => {:page => 1}).page
|
44
50
|
expect(page).to be_an Integer
|
45
|
-
expect(page).to eq
|
51
|
+
expect(page).to eq(1)
|
46
52
|
end
|
47
53
|
it "is nil when not set" do
|
48
54
|
page = Twitter::SearchResults.new.page
|
@@ -54,7 +60,7 @@ describe Twitter::SearchResults do
|
|
54
60
|
it "returns the query" do
|
55
61
|
query = Twitter::SearchResults.new(:search_metadata => {:query => "%23freebandnames"}).query
|
56
62
|
expect(query).to be_a String
|
57
|
-
expect(query).to eq
|
63
|
+
expect(query).to eq("%23freebandnames")
|
58
64
|
end
|
59
65
|
it "is nil when not set" do
|
60
66
|
query = Twitter::SearchResults.new.query
|
@@ -64,9 +70,9 @@ describe Twitter::SearchResults do
|
|
64
70
|
|
65
71
|
describe "#results_per_page" do
|
66
72
|
it "returns the number of results per page" do
|
67
|
-
results_per_page = Twitter::SearchResults.new(:search_metadata => {:
|
73
|
+
results_per_page = Twitter::SearchResults.new(:search_metadata => {:count => 4}).results_per_page
|
68
74
|
expect(results_per_page).to be_an Integer
|
69
|
-
expect(results_per_page).to eq
|
75
|
+
expect(results_per_page).to eq(4)
|
70
76
|
end
|
71
77
|
it "is nil when not set" do
|
72
78
|
results_per_page = Twitter::SearchResults.new.results_per_page
|
@@ -74,22 +80,11 @@ describe Twitter::SearchResults do
|
|
74
80
|
end
|
75
81
|
end
|
76
82
|
|
77
|
-
describe "#search_metadata?" do
|
78
|
-
it "returns true when search_metadata is set" do
|
79
|
-
search_metadata = Twitter::SearchResults.new(:search_metadata => {}).search_metadata?
|
80
|
-
expect(search_metadata).to be_true
|
81
|
-
end
|
82
|
-
it "returns false when search_metadata is not set" do
|
83
|
-
search_metadata = Twitter::SearchResults.new.search_metadata?
|
84
|
-
expect(search_metadata).to be_false
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
83
|
describe "#since_id" do
|
89
84
|
it "returns an ID" do
|
90
85
|
since_id = Twitter::SearchResults.new(:search_metadata => {:since_id => 250126199840518145}).since_id
|
91
86
|
expect(since_id).to be_an Integer
|
92
|
-
expect(since_id).to eq
|
87
|
+
expect(since_id).to eq(250126199840518145)
|
93
88
|
end
|
94
89
|
it "is nil when not set" do
|
95
90
|
since_id = Twitter::SearchResults.new.since_id
|
@@ -113,26 +108,18 @@ describe Twitter::SearchResults do
|
|
113
108
|
end
|
114
109
|
|
115
110
|
describe "#next_results" do
|
116
|
-
let(:next_results) {Twitter::SearchResults.new(:search_metadata => {:next_results => "?max_id=249279667666817023&q=%23freebandnames&count=4&include_entities=1&result_type=mixed"}).next_results}
|
117
|
-
|
118
111
|
it "returns a hash of query parameters" do
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
it "returns a max_id" do
|
123
|
-
expect(next_results[:max_id]).to eq "249279667666817023"
|
112
|
+
search_results = Twitter::SearchResults.new(:search_metadata => {:next_results => "?max_id=249279667666817023&q=%23freebandnames&count=4&include_entities=1&result_type=mixed"})
|
113
|
+
expect(search_results.next_results).to be_a Hash
|
114
|
+
expect(search_results.next_results[:max_id]).to eq("249279667666817023")
|
124
115
|
end
|
125
116
|
end
|
126
117
|
|
127
|
-
describe "#
|
128
|
-
let(:refresh_url) {Twitter::SearchResults.new(:search_metadata => {:refresh_url => "?since_id=249279667666817023&q=%23freebandnames&count=4&include_entities=1&result_type=recent"}).refresh_url}
|
129
|
-
|
118
|
+
describe "#refresh_results" do
|
130
119
|
it "returns a hash of query parameters" do
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
it "returns a since_id" do
|
135
|
-
expect(refresh_url[:since_id]).to eq "249279667666817023"
|
120
|
+
search_results = Twitter::SearchResults.new(:search_metadata => {:refresh_url => "?since_id=249279667666817023&q=%23freebandnames&count=4&include_entities=1&result_type=recent"})
|
121
|
+
expect(search_results.refresh_results).to be_a Hash
|
122
|
+
expect(search_results.refresh_results[:since_id]).to eq("249279667666817023")
|
136
123
|
end
|
137
124
|
end
|
138
125
|
|
@@ -3,13 +3,24 @@ require 'helper'
|
|
3
3
|
describe Twitter::Settings do
|
4
4
|
|
5
5
|
describe "#trend_location" do
|
6
|
-
it "returns a Twitter::Place when set" do
|
7
|
-
|
8
|
-
expect(
|
6
|
+
it "returns a Twitter::Place when trend_location is set" do
|
7
|
+
settings = Twitter::Settings.new(:trend_location => {:countryCode => "US", :name => "San Francisco", :country => "United States", :placeType => {:name => "Town", :code => 7}, :woeid => 2487956, :parentid => 23424977, :url => "http://where.yahooapis.com/v1/place/2487956"})
|
8
|
+
expect(settings.trend_location).to be_a Twitter::Place
|
9
9
|
end
|
10
|
-
it "returns nil when not set" do
|
11
|
-
|
12
|
-
expect(
|
10
|
+
it "returns nil when trend_location is not set" do
|
11
|
+
settings = Twitter::Settings.new
|
12
|
+
expect(settings.trend_location).to be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#trend_location?" do
|
17
|
+
it "returns true when trend_location is set" do
|
18
|
+
settings = Twitter::Settings.new(:trend_location => {:countryCode => "US", :name => "San Francisco", :country => "United States", :placeType => {:name => "Town", :code => 7}, :woeid => 2487956, :parentid => 23424977, :url => "http://where.yahooapis.com/v1/place/2487956"})
|
19
|
+
expect(settings.trend_location?).to be_true
|
20
|
+
end
|
21
|
+
it "returns false when trend_location is not set" do
|
22
|
+
settings = Twitter::Settings.new
|
23
|
+
expect(settings.trend_location?).to be_false
|
13
24
|
end
|
14
25
|
end
|
15
26
|
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Twitter::Streaming::Client do
|
4
|
+
before do
|
5
|
+
@client = Twitter::Streaming::Client.new
|
6
|
+
end
|
7
|
+
|
8
|
+
class FakeConnection
|
9
|
+
def initialize(body)
|
10
|
+
@body = body
|
11
|
+
end
|
12
|
+
|
13
|
+
def stream(request, response)
|
14
|
+
@body.each_line do |line|
|
15
|
+
response.on_body(line)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "supports tracking keywords" do
|
21
|
+
@client.connection = FakeConnection.new(fixture("track_streaming.json"))
|
22
|
+
tweets = []
|
23
|
+
@client.filter(:track => "india") do |tweet|
|
24
|
+
tweets << tweet
|
25
|
+
end
|
26
|
+
expect(tweets).to have(2).entries
|
27
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
28
|
+
expect(tweets.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
|
29
|
+
end
|
30
|
+
|
31
|
+
it "supports firehose" do
|
32
|
+
@client.connection = FakeConnection.new(fixture("track_streaming.json"))
|
33
|
+
tweets = []
|
34
|
+
@client.firehose do |tweet|
|
35
|
+
tweets << tweet
|
36
|
+
end
|
37
|
+
expect(tweets).to have(2).entries
|
38
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
39
|
+
expect(tweets.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
|
40
|
+
end
|
41
|
+
|
42
|
+
it "supports sample" do
|
43
|
+
@client.connection = FakeConnection.new(fixture("track_streaming.json"))
|
44
|
+
tweets = []
|
45
|
+
@client.sample do |tweet|
|
46
|
+
tweets << tweet
|
47
|
+
end
|
48
|
+
expect(tweets).to have(2).entries
|
49
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
50
|
+
expect(tweets.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
|
51
|
+
end
|
52
|
+
|
53
|
+
it "supports site streams" do
|
54
|
+
@client.connection = FakeConnection.new(fixture("track_streaming.json"))
|
55
|
+
tweets = []
|
56
|
+
@client.site(7505382) do |tweet|
|
57
|
+
tweets << tweet
|
58
|
+
end
|
59
|
+
expect(tweets).to have(2).entries
|
60
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
61
|
+
expect(tweets.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
|
62
|
+
end
|
63
|
+
|
64
|
+
it "supports user streams" do
|
65
|
+
@client.connection = FakeConnection.new(fixture("track_streaming.json"))
|
66
|
+
tweets = []
|
67
|
+
@client.user do |tweet|
|
68
|
+
tweets << tweet
|
69
|
+
end
|
70
|
+
expect(tweets).to have(2).entries
|
71
|
+
expect(tweets.first).to be_a Twitter::Tweet
|
72
|
+
expect(tweets.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Twitter::Token do
|
4
|
+
|
5
|
+
describe "#bearer?" do
|
6
|
+
it "returns true when token is a bearer token" do
|
7
|
+
token = Twitter::Token.new(:token_type => "bearer")
|
8
|
+
expect(token.bearer?).to be_true
|
9
|
+
end
|
10
|
+
it "returns false when token type is nil" do
|
11
|
+
token = Twitter::Token.new
|
12
|
+
expect(token.bearer?).to be_false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Twitter::TrendResults do
|
4
|
+
|
5
|
+
describe "#as_of" do
|
6
|
+
it "returns a Time when as_of is set" do
|
7
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :as_of => "2012-08-24T23:25:43Z")
|
8
|
+
expect(trend_results.as_of).to be_a Time
|
9
|
+
end
|
10
|
+
it "returns nil when as_of is not set" do
|
11
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
12
|
+
expect(trend_results.as_of).to be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#as_of?" do
|
17
|
+
it "returns true when as_of is set" do
|
18
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :as_of => "2012-08-24T23:24:14Z")
|
19
|
+
expect(trend_results.as_of?).to be_true
|
20
|
+
end
|
21
|
+
it "returns false when as_of is not set" do
|
22
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
23
|
+
expect(trend_results.as_of?).to be_false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#created_at" do
|
28
|
+
it "returns a Time when created_at is set" do
|
29
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :created_at => "2012-08-24T23:24:14Z")
|
30
|
+
expect(trend_results.created_at).to be_a Time
|
31
|
+
end
|
32
|
+
it "returns nil when created_at is not set" do
|
33
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
34
|
+
expect(trend_results.created_at).to be_nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#created?" do
|
39
|
+
it "returns true when created_at is set" do
|
40
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :created_at => "2012-08-24T23:24:14Z")
|
41
|
+
expect(trend_results.created?).to be_true
|
42
|
+
end
|
43
|
+
it "returns false when created_at is not set" do
|
44
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
45
|
+
expect(trend_results.created?).to be_false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#each" do
|
50
|
+
before do
|
51
|
+
@trend_results = Twitter::TrendResults.new(:trends => [{:id => 1}, {:id => 2}, {:id => 3}, {:id => 4}, {:id => 5}, {:id => 6}])
|
52
|
+
end
|
53
|
+
it "iterates" do
|
54
|
+
count = 0
|
55
|
+
@trend_results.each{count += 1}
|
56
|
+
expect(count).to eq(6)
|
57
|
+
end
|
58
|
+
context "with start" do
|
59
|
+
it "iterates" do
|
60
|
+
count = 0
|
61
|
+
@trend_results.each(5){count += 1}
|
62
|
+
expect(count).to eq(1)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#location" do
|
68
|
+
it "returns a Twitter::Place when location is set" do
|
69
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :locations => [{:name => "Worldwide", :woeid => 1}])
|
70
|
+
expect(trend_results.location).to be_a Twitter::Place
|
71
|
+
end
|
72
|
+
it "returns nil when location is not set" do
|
73
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
74
|
+
expect(trend_results.location).to be_nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "#location?" do
|
79
|
+
it "returns true when location is set" do
|
80
|
+
trend_results = Twitter::TrendResults.new(:id => 1, :locations => [{:name => "Worldwide", :woeid => 1}])
|
81
|
+
expect(trend_results.location?).to be_true
|
82
|
+
end
|
83
|
+
it "returns false when location is not set" do
|
84
|
+
trend_results = Twitter::TrendResults.new(:id => 1)
|
85
|
+
expect(trend_results.location?).to be_false
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
data/spec/twitter/trend_spec.rb
CHANGED
@@ -35,4 +35,27 @@ describe Twitter::Trend do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
describe "#uri" do
|
39
|
+
it "returns a URI when the url is set" do
|
40
|
+
trend = Twitter::Trend.new(:url => "http://twitter.com/search/?q=%23sevenwordsaftersex")
|
41
|
+
expect(trend.uri).to be_a URI
|
42
|
+
expect(trend.uri.to_s).to eq("http://twitter.com/search/?q=%23sevenwordsaftersex")
|
43
|
+
end
|
44
|
+
it "returns nil when the url is not set" do
|
45
|
+
trend = Twitter::Trend.new
|
46
|
+
expect(trend.uri).to be_nil
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#uri?" do
|
51
|
+
it "returns true when the url is set" do
|
52
|
+
trend = Twitter::Trend.new(:url => "https://api.twitter.com/1.1/geo/id/247f43d441defc03.json")
|
53
|
+
expect(trend.uri?).to be_true
|
54
|
+
end
|
55
|
+
it "returns false when the url is not set" do
|
56
|
+
trend = Twitter::Trend.new
|
57
|
+
expect(trend.uri?).to be_false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
38
61
|
end
|
data/spec/twitter/tweet_spec.rb
CHANGED
@@ -40,6 +40,17 @@ describe Twitter::Tweet do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
describe "#created?" do
|
44
|
+
it "returns true when created_at is set" do
|
45
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
|
46
|
+
expect(tweet.created?).to be_true
|
47
|
+
end
|
48
|
+
it "returns false when created_at is not set" do
|
49
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
50
|
+
expect(tweet.created?).to be_false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
43
54
|
describe "#entities?" do
|
44
55
|
it "returns false if there are no entities set" do
|
45
56
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
@@ -49,9 +60,9 @@ describe Twitter::Tweet do
|
|
49
60
|
it "returns true if there are entities set" do
|
50
61
|
urls_array = [
|
51
62
|
{
|
52
|
-
:url =>
|
53
|
-
:expanded_url =>
|
54
|
-
:display_url =>
|
63
|
+
:url => "http://example.com/t.co",
|
64
|
+
:expanded_url => "http://example.com/expanded",
|
65
|
+
:display_url => "example.com/expanded",
|
55
66
|
:indices => [10, 33],
|
56
67
|
}
|
57
68
|
]
|
@@ -60,62 +71,33 @@ describe Twitter::Tweet do
|
|
60
71
|
end
|
61
72
|
end
|
62
73
|
|
63
|
-
describe "#favoriters_count" do
|
64
|
-
it "returns the count of favoriters when favoriters_count is set" do
|
65
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :favoriters_count => '1')
|
66
|
-
expect(tweet.favoriters_count).to be_an Integer
|
67
|
-
expect(tweet.favoriters_count).to eq 1
|
68
|
-
end
|
69
|
-
it "returns nil when not set" do
|
70
|
-
tweet = Twitter::Tweet.new(:id => 28669546014)
|
71
|
-
expect(tweet.favoriters_count).to be_nil
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe "#from_user" do
|
76
|
-
it "returns a screen name when from_user is set" do
|
77
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :from_user => 'sferik')
|
78
|
-
expect(tweet.from_user).to be_a String
|
79
|
-
expect(tweet.from_user).to eq "sferik"
|
80
|
-
end
|
81
|
-
it "returns a screen name when screen_name is set" do
|
82
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382, :screen_name => 'sferik'})
|
83
|
-
expect(tweet.from_user).to be_a String
|
84
|
-
expect(tweet.from_user).to eq "sferik"
|
85
|
-
end
|
86
|
-
it "returns nil when not set" do
|
87
|
-
tweet = Twitter::Tweet.new(:id => 28669546014)
|
88
|
-
expect(tweet.from_user).to be_nil
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
74
|
describe "#filter_level" do
|
93
75
|
it "returns the filter level when filter_level is set" do
|
94
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :filter_level =>
|
76
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :filter_level => "high")
|
95
77
|
expect(tweet.filter_level).to be_a String
|
96
|
-
expect(tweet.filter_level).to eq
|
78
|
+
expect(tweet.filter_level).to eq("high")
|
97
79
|
end
|
98
80
|
it "returns \"none\" when not set" do
|
99
81
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
100
|
-
expect(tweet.filter_level).to eq
|
82
|
+
expect(tweet.filter_level).to eq("none")
|
101
83
|
end
|
102
84
|
end
|
103
85
|
|
104
86
|
describe "#full_text" do
|
105
87
|
it "returns the text of a Tweet" do
|
106
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :text =>
|
88
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :text => "BOOSH")
|
107
89
|
expect(tweet.full_text).to be_a String
|
108
|
-
expect(tweet.full_text).to eq
|
90
|
+
expect(tweet.full_text).to eq("BOOSH")
|
109
91
|
end
|
110
92
|
it "returns the text of a Tweet without a user" do
|
111
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :text =>
|
93
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :text => "BOOSH", :retweeted_status => {:id => 28561922517, :text => "BOOSH"})
|
112
94
|
expect(tweet.full_text).to be_a String
|
113
|
-
expect(tweet.full_text).to eq
|
95
|
+
expect(tweet.full_text).to eq("BOOSH")
|
114
96
|
end
|
115
97
|
it "returns the full text of a retweeted Tweet" do
|
116
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :text =>
|
98
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :text => "RT @sferik: BOOSH", :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
|
117
99
|
expect(tweet.full_text).to be_a String
|
118
|
-
expect(tweet.full_text).to eq
|
100
|
+
expect(tweet.full_text).to eq("RT @sferik: BOOSH")
|
119
101
|
end
|
120
102
|
it "returns nil when retweeted_status is not set" do
|
121
103
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
@@ -124,29 +106,40 @@ describe Twitter::Tweet do
|
|
124
106
|
end
|
125
107
|
|
126
108
|
describe "#geo" do
|
127
|
-
it "returns a Twitter::Geo::Point when set" do
|
128
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :geo => {:id => 1, :type =>
|
109
|
+
it "returns a Twitter::Geo::Point when geo is set" do
|
110
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :geo => {:id => 1, :type => "Point"})
|
129
111
|
expect(tweet.geo).to be_a Twitter::Geo::Point
|
130
112
|
end
|
131
|
-
it "returns nil when not set" do
|
113
|
+
it "returns nil when geo is not set" do
|
132
114
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
133
115
|
expect(tweet.geo).to be_nil
|
134
116
|
end
|
135
117
|
end
|
136
118
|
|
119
|
+
describe "#geo?" do
|
120
|
+
it "returns true when geo is set" do
|
121
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :geo => {:id => 1, :type => "Point"})
|
122
|
+
expect(tweet.geo?).to be_true
|
123
|
+
end
|
124
|
+
it "returns false when geo is not set" do
|
125
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
126
|
+
expect(tweet.geo?).to be_false
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
137
130
|
describe "#hashtags" do
|
138
|
-
it "returns an
|
131
|
+
it "returns an array of Entity::Hashtag when entities are set" do
|
139
132
|
hashtags_array = [
|
140
133
|
{
|
141
|
-
:text =>
|
134
|
+
:text => "twitter",
|
142
135
|
:indices => [10, 33],
|
143
136
|
}
|
144
137
|
]
|
145
138
|
hashtags = Twitter::Tweet.new(:id => 28669546014, :entities => {:hashtags => hashtags_array}).hashtags
|
146
139
|
expect(hashtags).to be_an Array
|
147
140
|
expect(hashtags.first).to be_a Twitter::Entity::Hashtag
|
148
|
-
expect(hashtags.first.indices).to eq
|
149
|
-
expect(hashtags.first.text).to eq
|
141
|
+
expect(hashtags.first.indices).to eq([10, 33])
|
142
|
+
expect(hashtags.first.text).to eq("twitter")
|
150
143
|
end
|
151
144
|
it "is empty when not set" do
|
152
145
|
hashtags = Twitter::Tweet.new(:id => 28669546014).hashtags
|
@@ -160,7 +153,7 @@ describe Twitter::Tweet do
|
|
160
153
|
|
161
154
|
describe "#media" do
|
162
155
|
it "returns media" do
|
163
|
-
media = Twitter::Tweet.new(:id => 28669546014, :entities => {:media => [{:id => 1, :type =>
|
156
|
+
media = Twitter::Tweet.new(:id => 28669546014, :entities => {:media => [{:id => 1, :type => "photo"}]}).media
|
164
157
|
expect(media).to be_an Array
|
165
158
|
expect(media.first).to be_a Twitter::Media::Photo
|
166
159
|
end
|
@@ -175,36 +168,46 @@ describe Twitter::Tweet do
|
|
175
168
|
end
|
176
169
|
|
177
170
|
describe "#metadata" do
|
178
|
-
it "returns a
|
179
|
-
|
180
|
-
expect(metadata).to be_a Twitter::Metadata
|
171
|
+
it "returns a Twitter::Metadata when metadata is set" do
|
172
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :metadata => {})
|
173
|
+
expect(tweet.metadata).to be_a Twitter::Metadata
|
181
174
|
end
|
182
|
-
it "returns nil when
|
183
|
-
|
184
|
-
expect(metadata).to be_nil
|
175
|
+
it "returns nil when metadata is not set" do
|
176
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
177
|
+
expect(tweet.metadata).to be_nil
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
describe "#metadata?" do
|
182
|
+
it "returns true when metadata is set" do
|
183
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :metadata => {})
|
184
|
+
expect(tweet.metadata?).to be_true
|
185
|
+
end
|
186
|
+
it "returns false when metadata is not set" do
|
187
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
188
|
+
expect(tweet.metadata?).to be_false
|
185
189
|
end
|
186
190
|
end
|
187
191
|
|
188
192
|
describe "#place" do
|
189
|
-
it "returns a Twitter::Place when set" do
|
193
|
+
it "returns a Twitter::Place when place is set" do
|
190
194
|
tweet = Twitter::Tweet.new(:id => 28669546014, :place => {:id => "247f43d441defc03"})
|
191
195
|
expect(tweet.place).to be_a Twitter::Place
|
192
196
|
end
|
193
|
-
it "returns nil when not set" do
|
197
|
+
it "returns nil when place is not set" do
|
194
198
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
195
199
|
expect(tweet.place).to be_nil
|
196
200
|
end
|
197
201
|
end
|
198
202
|
|
199
|
-
describe "#
|
200
|
-
it "returns
|
201
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :
|
202
|
-
expect(tweet.
|
203
|
-
expect(tweet.repliers_count).to eq 1
|
203
|
+
describe "#place?" do
|
204
|
+
it "returns true when place is set" do
|
205
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :place => {:id => "247f43d441defc03"})
|
206
|
+
expect(tweet.place?).to be_true
|
204
207
|
end
|
205
|
-
it "returns
|
208
|
+
it "returns false when place is not set" do
|
206
209
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
207
|
-
expect(tweet.
|
210
|
+
expect(tweet.place?).to be_false
|
208
211
|
end
|
209
212
|
end
|
210
213
|
|
@@ -221,7 +224,7 @@ describe Twitter::Tweet do
|
|
221
224
|
|
222
225
|
describe "#retweet?" do
|
223
226
|
it "returns true when there is a retweeted status" do
|
224
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id =>
|
227
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
|
225
228
|
expect(tweet.retweet?).to be_true
|
226
229
|
end
|
227
230
|
it "returns false when retweeted_status is not set" do
|
@@ -231,10 +234,10 @@ describe Twitter::Tweet do
|
|
231
234
|
end
|
232
235
|
|
233
236
|
describe "#retweeted_status" do
|
234
|
-
it "
|
235
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id =>
|
237
|
+
it "returns a Tweet when retweeted_status is set" do
|
238
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
|
236
239
|
expect(tweet.retweeted_tweet).to be_a Twitter::Tweet
|
237
|
-
expect(tweet.retweeted_tweet.text).to eq
|
240
|
+
expect(tweet.retweeted_tweet.text).to eq("BOOSH")
|
238
241
|
end
|
239
242
|
it "returns nil when retweeted_status is not set" do
|
240
243
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
@@ -242,35 +245,29 @@ describe Twitter::Tweet do
|
|
242
245
|
end
|
243
246
|
end
|
244
247
|
|
245
|
-
describe "#
|
246
|
-
it "returns
|
247
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :
|
248
|
-
expect(tweet.
|
249
|
-
expect(tweet.retweeters_count).to eq 1
|
250
|
-
end
|
251
|
-
it "returns the count of favoriters when retweeters_count is set" do
|
252
|
-
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeters_count => '1')
|
253
|
-
expect(tweet.retweeters_count).to be_an Integer
|
254
|
-
expect(tweet.retweeters_count).to eq 1
|
248
|
+
describe "#retweeted_status?" do
|
249
|
+
it "returns true when retweeted_status is set" do
|
250
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
|
251
|
+
expect(tweet.retweeted_status?).to be_true
|
255
252
|
end
|
256
|
-
it "returns
|
253
|
+
it "returns false when retweeted_status is not set" do
|
257
254
|
tweet = Twitter::Tweet.new(:id => 28669546014)
|
258
|
-
expect(tweet.
|
255
|
+
expect(tweet.retweeted_status?).to be_false
|
259
256
|
end
|
260
257
|
end
|
261
258
|
|
262
259
|
describe "#symbols" do
|
263
|
-
it "returns an
|
260
|
+
it "returns an array of Entity::Symbol when symbols are set" do
|
264
261
|
symbols_array = [
|
265
|
-
{ :text =>
|
266
|
-
{ :text =>
|
262
|
+
{ :text => "PEP", :indices => [114, 118] },
|
263
|
+
{ :text => "COKE", :indices => [128, 133] }
|
267
264
|
]
|
268
265
|
symbols = Twitter::Tweet.new(:id => 28669546014, :entities => {:symbols => symbols_array}).symbols
|
269
266
|
expect(symbols).to be_an Array
|
270
|
-
expect(symbols.size).to eq
|
267
|
+
expect(symbols.size).to eq(2)
|
271
268
|
expect(symbols.first).to be_a Twitter::Entity::Symbol
|
272
|
-
expect(symbols.first.indices).to eq
|
273
|
-
expect(symbols.first.text).to eq
|
269
|
+
expect(symbols.first.indices).to eq([114, 118])
|
270
|
+
expect(symbols.first.text).to eq("PEP")
|
274
271
|
end
|
275
272
|
it "is empty when not set" do
|
276
273
|
symbols = Twitter::Tweet.new(:id => 28669546014).symbols
|
@@ -282,25 +279,26 @@ describe Twitter::Tweet do
|
|
282
279
|
end
|
283
280
|
end
|
284
281
|
|
285
|
-
describe "#
|
286
|
-
it "returns an
|
282
|
+
describe "#uris" do
|
283
|
+
it "returns an array of Entity::URIs when entities are set" do
|
287
284
|
urls_array = [
|
288
285
|
{
|
289
|
-
:url =>
|
290
|
-
:expanded_url =>
|
291
|
-
:display_url =>
|
286
|
+
:url => "http://example.com/t.co",
|
287
|
+
:expanded_url => "http://example.com/expanded",
|
288
|
+
:display_url => "example.com/expanded",
|
292
289
|
:indices => [10, 33],
|
293
290
|
}
|
294
291
|
]
|
295
|
-
|
296
|
-
expect(
|
297
|
-
expect(
|
298
|
-
expect(
|
299
|
-
expect(
|
292
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_array})
|
293
|
+
expect(tweet.uris).to be_an Array
|
294
|
+
expect(tweet.uris.first).to be_a Twitter::Entity::URI
|
295
|
+
expect(tweet.uris.first.indices).to eq([10, 33])
|
296
|
+
expect(tweet.uris.first.display_uri).to be_a URI
|
297
|
+
expect(tweet.uris.first.display_uri.to_s).to eq("example.com/expanded")
|
300
298
|
end
|
301
299
|
it "is empty when not set" do
|
302
|
-
|
303
|
-
expect(
|
300
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
301
|
+
expect(tweet.uris).to be_empty
|
304
302
|
end
|
305
303
|
it "warns when not set" do
|
306
304
|
Twitter::Tweet.new(:id => 28669546014).urls
|
@@ -308,39 +306,48 @@ describe Twitter::Tweet do
|
|
308
306
|
end
|
309
307
|
end
|
310
308
|
|
309
|
+
describe "#uri" do
|
310
|
+
it "returns the URI to the tweet" do
|
311
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382, :screen_name => "sferik"})
|
312
|
+
expect(tweet.uri).to be_a URI
|
313
|
+
expect(tweet.uri.to_s).to eq("https://twitter.com/sferik/status/28669546014")
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
311
317
|
describe "#user" do
|
312
318
|
it "returns a User when user is set" do
|
313
|
-
|
314
|
-
expect(user).to be_a Twitter::User
|
319
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382})
|
320
|
+
expect(tweet.user).to be_a Twitter::User
|
315
321
|
end
|
316
322
|
it "returns nil when user is not set" do
|
317
|
-
|
318
|
-
expect(user).to be_nil
|
323
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
324
|
+
expect(tweet.user).to be_nil
|
319
325
|
end
|
320
|
-
it "has a status
|
321
|
-
|
322
|
-
expect(user.status).to be_a Twitter::Tweet
|
326
|
+
it "has a status is set" do
|
327
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :text => "Tweet text.", :user => {:id => 7505382})
|
328
|
+
expect(tweet.user.status).to be_a Twitter::Tweet
|
329
|
+
expect(tweet.user.status.id).to eq 28669546014
|
323
330
|
end
|
324
331
|
end
|
325
332
|
|
326
333
|
describe "#user?" do
|
327
334
|
it "returns true when status is set" do
|
328
|
-
|
329
|
-
expect(user).to be_true
|
335
|
+
tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382})
|
336
|
+
expect(tweet.user?).to be_true
|
330
337
|
end
|
331
338
|
it "returns false when status is not set" do
|
332
|
-
|
333
|
-
expect(user).to be_false
|
339
|
+
tweet = Twitter::Tweet.new(:id => 28669546014)
|
340
|
+
expect(tweet.user?).to be_false
|
334
341
|
end
|
335
342
|
end
|
336
343
|
|
337
344
|
describe "#user_mentions" do
|
338
|
-
it "returns an
|
345
|
+
it "returns an array of Entity::UserMention when entities are set" do
|
339
346
|
user_mentions_array = [
|
340
347
|
{
|
341
|
-
:screen_name =>
|
342
|
-
:name =>
|
343
|
-
:id_str =>
|
348
|
+
:screen_name => "sferik",
|
349
|
+
:name => "Erik Michaels-Ober",
|
350
|
+
:id_str => "7505382",
|
344
351
|
:indices => [0, 6],
|
345
352
|
:id => 7505382,
|
346
353
|
}
|
@@ -348,8 +355,8 @@ describe Twitter::Tweet do
|
|
348
355
|
user_mentions = Twitter::Tweet.new(:id => 28669546014, :entities => {:user_mentions => user_mentions_array}).user_mentions
|
349
356
|
expect(user_mentions).to be_an Array
|
350
357
|
expect(user_mentions.first).to be_a Twitter::Entity::UserMention
|
351
|
-
expect(user_mentions.first.indices).to eq
|
352
|
-
expect(user_mentions.first.id).to eq
|
358
|
+
expect(user_mentions.first.indices).to eq([0, 6])
|
359
|
+
expect(user_mentions.first.id).to eq(7505382)
|
353
360
|
end
|
354
361
|
it "is empty when not set" do
|
355
362
|
user_mentions = Twitter::Tweet.new(:id => 28669546014).user_mentions
|