twitter 5.0.0 → 5.4.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.
Files changed (145) hide show
  1. data/.yardopts +4 -0
  2. data/CHANGELOG.md +47 -0
  3. data/CONTRIBUTING.md +5 -5
  4. data/README.md +57 -56
  5. data/Rakefile +26 -5
  6. data/lib/twitter/arguments.rb +1 -2
  7. data/lib/twitter/base.rb +15 -18
  8. data/lib/twitter/basic_user.rb +3 -3
  9. data/lib/twitter/client.rb +9 -10
  10. data/lib/twitter/configuration.rb +5 -5
  11. data/lib/twitter/creatable.rb +0 -1
  12. data/lib/twitter/cursor.rb +9 -36
  13. data/lib/twitter/direct_message.rb +1 -1
  14. data/lib/twitter/entity/uri.rb +2 -2
  15. data/lib/twitter/enumerable.rb +10 -1
  16. data/lib/twitter/error/already_favorited.rb +1 -1
  17. data/lib/twitter/error/already_posted.rb +1 -1
  18. data/lib/twitter/error/already_retweeted.rb +1 -1
  19. data/lib/twitter/error/too_many_requests.rb +2 -2
  20. data/lib/twitter/error.rb +6 -6
  21. data/lib/twitter/factory.rb +2 -6
  22. data/lib/twitter/geo/point.rb +3 -5
  23. data/lib/twitter/geo.rb +1 -1
  24. data/lib/twitter/geo_factory.rb +1 -5
  25. data/lib/twitter/geo_results.rb +5 -8
  26. data/lib/twitter/identity.rb +1 -2
  27. data/lib/twitter/list.rb +10 -11
  28. data/lib/twitter/media/photo.rb +1 -2
  29. data/lib/twitter/media_factory.rb +1 -5
  30. data/lib/twitter/null_object.rb +4 -6
  31. data/lib/twitter/oembed.rb +1 -1
  32. data/lib/twitter/place.rb +17 -6
  33. data/lib/twitter/profile_banner.rb +1 -3
  34. data/lib/twitter/rate_limit.rb +1 -3
  35. data/lib/twitter/relationship.rb +1 -2
  36. data/lib/twitter/rest/api/direct_messages.rb +15 -15
  37. data/lib/twitter/rest/api/favorites.rb +15 -15
  38. data/lib/twitter/rest/api/friends_and_followers.rb +37 -42
  39. data/lib/twitter/rest/api/help.rb +8 -9
  40. data/lib/twitter/rest/api/lists.rb +69 -69
  41. data/lib/twitter/rest/api/oauth.rb +3 -4
  42. data/lib/twitter/rest/api/places_and_geo.rb +9 -10
  43. data/lib/twitter/rest/api/saved_searches.rb +8 -8
  44. data/lib/twitter/rest/api/search.rb +10 -2
  45. data/lib/twitter/rest/api/spam_reporting.rb +1 -2
  46. data/lib/twitter/rest/api/suggested_users.rb +4 -5
  47. data/lib/twitter/rest/api/timelines.rb +17 -18
  48. data/lib/twitter/rest/api/trends.rb +10 -11
  49. data/lib/twitter/rest/api/tweets.rb +31 -20
  50. data/lib/twitter/rest/api/undocumented.rb +6 -7
  51. data/lib/twitter/rest/api/users.rb +53 -54
  52. data/lib/twitter/rest/api/utils.rb +28 -34
  53. data/lib/twitter/rest/client.rb +8 -9
  54. data/lib/twitter/rest/request/multipart_with_file.rb +7 -5
  55. data/lib/twitter/rest/response/parse_error_json.rb +0 -2
  56. data/lib/twitter/rest/response/parse_json.rb +2 -2
  57. data/lib/twitter/rest/response/raise_error.rb +1 -3
  58. data/lib/twitter/search_results.rb +38 -56
  59. data/lib/twitter/settings.rb +2 -2
  60. data/lib/twitter/size.rb +2 -2
  61. data/lib/twitter/source_user.rb +1 -1
  62. data/lib/twitter/streaming/client.rb +69 -18
  63. data/lib/twitter/streaming/connection.rb +1 -3
  64. data/lib/twitter/streaming/deleted_tweet.rb +8 -0
  65. data/lib/twitter/streaming/event.rb +8 -8
  66. data/lib/twitter/streaming/friend_list.rb +2 -9
  67. data/lib/twitter/streaming/message_parser.rb +13 -3
  68. data/lib/twitter/streaming/response.rb +0 -2
  69. data/lib/twitter/streaming/stall_warning.rb +7 -0
  70. data/lib/twitter/suggestion.rb +0 -1
  71. data/lib/twitter/token.rb +2 -3
  72. data/lib/twitter/trend_results.rb +5 -8
  73. data/lib/twitter/tweet.rb +17 -18
  74. data/lib/twitter/user.rb +33 -35
  75. data/lib/twitter/utils.rb +14 -0
  76. data/lib/twitter/version.rb +2 -5
  77. data/lib/twitter.rb +1 -1
  78. data/spec/fixtures/forbidden.json +1 -0
  79. data/spec/fixtures/search.json +1 -1
  80. data/spec/fixtures/search2.json +1 -0
  81. data/spec/fixtures/track_streaming_user.json +2 -1
  82. data/spec/helper.rb +6 -2
  83. data/spec/twitter/base_spec.rb +9 -9
  84. data/spec/twitter/basic_user_spec.rb +6 -6
  85. data/spec/twitter/configuration_spec.rb +4 -4
  86. data/spec/twitter/cursor_spec.rb +13 -51
  87. data/spec/twitter/direct_message_spec.rb +36 -36
  88. data/spec/twitter/entity/uri_spec.rb +29 -29
  89. data/spec/twitter/error_spec.rb +21 -21
  90. data/spec/twitter/geo/point_spec.rb +9 -9
  91. data/spec/twitter/geo/polygon_spec.rb +5 -5
  92. data/spec/twitter/geo_factory_spec.rb +7 -7
  93. data/spec/twitter/geo_results_spec.rb +11 -11
  94. data/spec/twitter/geo_spec.rb +5 -5
  95. data/spec/twitter/identifiable_spec.rb +9 -9
  96. data/spec/twitter/list_spec.rb +38 -38
  97. data/spec/twitter/media/photo_spec.rb +58 -58
  98. data/spec/twitter/media_factory_spec.rb +5 -5
  99. data/spec/twitter/null_object_spec.rb +6 -6
  100. data/spec/twitter/oembed_spec.rb +68 -68
  101. data/spec/twitter/place_spec.rb +91 -62
  102. data/spec/twitter/profile_banner_spec.rb +3 -3
  103. data/spec/twitter/rate_limit_spec.rb +18 -18
  104. data/spec/twitter/relationship_spec.rb +16 -16
  105. data/spec/twitter/rest/api/direct_messages_spec.rb +61 -61
  106. data/spec/twitter/rest/api/favorites_spec.rb +93 -93
  107. data/spec/twitter/rest/api/friends_and_followers_spec.rb +357 -349
  108. data/spec/twitter/rest/api/geo_spec.rb +33 -33
  109. data/spec/twitter/rest/api/help_spec.rb +24 -24
  110. data/spec/twitter/rest/api/lists_spec.rb +487 -487
  111. data/spec/twitter/rest/api/oauth_spec.rb +30 -30
  112. data/spec/twitter/rest/api/saved_searches_spec.rb +50 -40
  113. data/spec/twitter/rest/api/search_spec.rb +27 -26
  114. data/spec/twitter/rest/api/spam_reporting_spec.rb +9 -9
  115. data/spec/twitter/rest/api/suggested_users_spec.rb +23 -23
  116. data/spec/twitter/rest/api/timelines_spec.rb +58 -58
  117. data/spec/twitter/rest/api/trends_spec.rb +26 -26
  118. data/spec/twitter/rest/api/tweets_spec.rb +304 -266
  119. data/spec/twitter/rest/api/undocumented_spec.rb +51 -51
  120. data/spec/twitter/rest/api/users_spec.rb +360 -360
  121. data/spec/twitter/rest/client_spec.rb +99 -103
  122. data/spec/twitter/saved_search_spec.rb +16 -16
  123. data/spec/twitter/search_results_spec.rb +14 -110
  124. data/spec/twitter/settings_spec.rb +8 -8
  125. data/spec/twitter/size_spec.rb +5 -5
  126. data/spec/twitter/source_user_spec.rb +6 -6
  127. data/spec/twitter/streaming/client_spec.rb +85 -54
  128. data/spec/twitter/streaming/deleted_tweet_spec.rb +23 -0
  129. data/spec/twitter/streaming/event_spec.rb +20 -22
  130. data/spec/twitter/streaming/friend_list_spec.rb +11 -0
  131. data/spec/twitter/streaming/message_parser_spec.rb +54 -0
  132. data/spec/twitter/suggestion_spec.rb +11 -11
  133. data/spec/twitter/target_user_spec.rb +6 -6
  134. data/spec/twitter/token_spec.rb +4 -4
  135. data/spec/twitter/trend_results_spec.rb +30 -30
  136. data/spec/twitter/trend_spec.rb +21 -21
  137. data/spec/twitter/tweet_spec.rb +178 -164
  138. data/spec/twitter/user_spec.rb +190 -190
  139. data/twitter.gemspec +6 -6
  140. data.tar.gz.sig +0 -0
  141. metadata +44 -16
  142. metadata.gz.sig +0 -0
  143. data/lib/twitter/core_ext/enumerable.rb +0 -10
  144. data/lib/twitter/core_ext/kernel.rb +0 -10
  145. data/spec/twitter_spec.rb +0 -0
@@ -2,47 +2,47 @@ require 'helper'
2
2
 
3
3
  describe Twitter::Trend do
4
4
 
5
- describe "#==" do
6
- it "returns true for empty objects" do
5
+ describe '#==' do
6
+ it 'returns true for empty objects' do
7
7
  trend = Twitter::Trend.new
8
8
  other = Twitter::Trend.new
9
9
  expect(trend == other).to be true
10
10
  end
11
- it "returns true when objects names are the same" do
12
- trend = Twitter::Trend.new(:name => "#sevenwordsaftersex", :query => "foo")
13
- other = Twitter::Trend.new(:name => "#sevenwordsaftersex", :query => "bar")
11
+ it 'returns true when objects names are the same' do
12
+ trend = Twitter::Trend.new(:name => '#sevenwordsaftersex', :query => 'foo')
13
+ other = Twitter::Trend.new(:name => '#sevenwordsaftersex', :query => 'bar')
14
14
  expect(trend == other).to be true
15
15
  end
16
- it "returns false when objects names are different" do
17
- trend = Twitter::Trend.new(:name => "#sevenwordsaftersex")
18
- other = Twitter::Trend.new(:name => "#sixwordsaftersex")
16
+ it 'returns false when objects names are different' do
17
+ trend = Twitter::Trend.new(:name => '#sevenwordsaftersex')
18
+ other = Twitter::Trend.new(:name => '#sixwordsaftersex')
19
19
  expect(trend == other).to be false
20
20
  end
21
- it "returns false when classes are different" do
22
- trend = Twitter::Trend.new(:name => "#sevenwordsaftersex")
23
- other = Twitter::Base.new(:name => "#sevenwordsaftersex")
21
+ it 'returns false when classes are different' do
22
+ trend = Twitter::Trend.new(:name => '#sevenwordsaftersex')
23
+ other = Twitter::Base.new(:name => '#sevenwordsaftersex')
24
24
  expect(trend == other).to be false
25
25
  end
26
26
  end
27
27
 
28
- describe "#uri" do
29
- it "returns a URI when the url is set" do
30
- trend = Twitter::Trend.new(:url => "http://twitter.com/search/?q=%23sevenwordsaftersex")
31
- expect(trend.uri).to be_a URI
32
- expect(trend.uri.to_s).to eq("http://twitter.com/search/?q=%23sevenwordsaftersex")
28
+ describe '#uri' do
29
+ it 'returns a URI when the url is set' do
30
+ trend = Twitter::Trend.new(:url => 'http://twitter.com/search/?q=%23sevenwordsaftersex')
31
+ expect(trend.uri).to be_a Addressable::URI
32
+ expect(trend.uri.to_s).to eq('http://twitter.com/search/?q=%23sevenwordsaftersex')
33
33
  end
34
- it "returns nil when the url is not set" do
34
+ it 'returns nil when the url is not set' do
35
35
  trend = Twitter::Trend.new
36
36
  expect(trend.uri).to be_nil
37
37
  end
38
38
  end
39
39
 
40
- describe "#uri?" do
41
- it "returns true when the url is set" do
42
- trend = Twitter::Trend.new(:url => "https://api.twitter.com/1.1/geo/id/247f43d441defc03.json")
40
+ describe '#uri?' do
41
+ it 'returns true when the url is set' do
42
+ trend = Twitter::Trend.new(:url => 'https://api.twitter.com/1.1/geo/id/247f43d441defc03.json')
43
43
  expect(trend.uri?).to be true
44
44
  end
45
- it "returns false when the url is not set" do
45
+ it 'returns false when the url is not set' do
46
46
  trend = Twitter::Trend.new
47
47
  expect(trend.uri?).to be false
48
48
  end
@@ -12,364 +12,378 @@ describe Twitter::Tweet do
12
12
  $stderr = @old_stderr
13
13
  end
14
14
 
15
- describe "#==" do
16
- it "returns true when objects IDs are the same" do
17
- tweet = Twitter::Tweet.new(:id => 1, :text => "foo")
18
- other = Twitter::Tweet.new(:id => 1, :text => "bar")
15
+ describe '#==' do
16
+ it 'returns true when objects IDs are the same' do
17
+ tweet = Twitter::Tweet.new(:id => 1, :text => 'foo')
18
+ other = Twitter::Tweet.new(:id => 1, :text => 'bar')
19
19
  expect(tweet == other).to be true
20
20
  end
21
- it "returns false when objects IDs are different" do
21
+ it 'returns false when objects IDs are different' do
22
22
  tweet = Twitter::Tweet.new(:id => 1)
23
23
  other = Twitter::Tweet.new(:id => 2)
24
24
  expect(tweet == other).to be false
25
25
  end
26
- it "returns false when classes are different" do
26
+ it 'returns false when classes are different' do
27
27
  tweet = Twitter::Tweet.new(:id => 1)
28
28
  other = Twitter::Identity.new(:id => 1)
29
29
  expect(tweet == other).to be false
30
30
  end
31
31
  end
32
32
 
33
- describe "#created_at" do
34
- it "returns a Time when set" do
35
- tweet = Twitter::Tweet.new(:id => 28669546014, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
33
+ describe '#created_at' do
34
+ it 'returns a Time when set' do
35
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :created_at => 'Mon Jul 16 12:59:01 +0000 2007')
36
36
  expect(tweet.created_at).to be_a Time
37
37
  end
38
- it "returns nil when not set" do
39
- tweet = Twitter::Tweet.new(:id => 28669546014)
38
+ it 'returns nil when not set' do
39
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
40
40
  expect(tweet.created_at).to be_nil
41
41
  end
42
42
  end
43
43
 
44
- describe "#created?" do
45
- it "returns true when created_at is set" do
46
- tweet = Twitter::Tweet.new(:id => 28669546014, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
44
+ describe '#created?' do
45
+ it 'returns true when created_at is set' do
46
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :created_at => 'Mon Jul 16 12:59:01 +0000 2007')
47
47
  expect(tweet.created?).to be true
48
48
  end
49
- it "returns false when created_at is not set" do
50
- tweet = Twitter::Tweet.new(:id => 28669546014)
49
+ it 'returns false when created_at is not set' do
50
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
51
51
  expect(tweet.created?).to be false
52
52
  end
53
53
  end
54
54
 
55
- describe "#entities?" do
56
- it "returns false if there are no entities set" do
57
- tweet = Twitter::Tweet.new(:id => 28669546014)
55
+ describe '#entities?' do
56
+ it 'returns false if there are no entities set' do
57
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
58
58
  expect(tweet.entities?).to be false
59
59
  end
60
60
 
61
- it "returns false if there are blank lists of entities set" do
62
- tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => []})
61
+ it 'returns false if there are blank lists of entities set' do
62
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:urls => []})
63
63
  expect(tweet.entities?).to be false
64
64
  end
65
-
66
- it "returns true if there are entities set" do
65
+ it 'returns true if there are entities set' do
67
66
  urls_array = [
68
67
  {
69
- :url => "http://example.com/t.co",
70
- :expanded_url => "http://example.com/expanded",
71
- :display_url => "example.com/expanded…",
68
+ :url => 'http://example.com/t.co',
69
+ :expanded_url => 'http://example.com/expanded',
70
+ :display_url => 'example.com/expanded…',
72
71
  :indices => [10, 33],
73
72
  }
74
73
  ]
75
- tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_array})
74
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:urls => urls_array})
76
75
  expect(tweet.entities?).to be true
77
76
  end
78
77
  end
79
78
 
80
- describe "#filter_level" do
81
- it "returns the filter level when filter_level is set" do
82
- tweet = Twitter::Tweet.new(:id => 28669546014, :filter_level => "high")
79
+ describe '#filter_level' do
80
+ it 'returns the filter level when filter_level is set' do
81
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :filter_level => 'high')
83
82
  expect(tweet.filter_level).to be_a String
84
- expect(tweet.filter_level).to eq("high")
83
+ expect(tweet.filter_level).to eq('high')
85
84
  end
86
- it "returns \"none\" when not set" do
87
- tweet = Twitter::Tweet.new(:id => 28669546014)
88
- expect(tweet.filter_level).to eq("none")
85
+ it 'returns \'none\' when not set' do
86
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
87
+ expect(tweet.filter_level).to eq('none')
89
88
  end
90
89
  end
91
90
 
92
- describe "#full_text" do
93
- it "returns the text of a Tweet" do
94
- tweet = Twitter::Tweet.new(:id => 28669546014, :text => "BOOSH")
91
+ describe '#full_text' do
92
+ it 'returns the text of a Tweet' do
93
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :text => 'BOOSH')
95
94
  expect(tweet.full_text).to be_a String
96
- expect(tweet.full_text).to eq("BOOSH")
95
+ expect(tweet.full_text).to eq('BOOSH')
97
96
  end
98
- it "returns the text of a Tweet without a user" do
99
- tweet = Twitter::Tweet.new(:id => 28669546014, :text => "BOOSH", :retweeted_status => {:id => 28561922517, :text => "BOOSH"})
97
+ it 'returns the text of a Tweet without a user' do
98
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :text => 'BOOSH', :retweeted_status => {:id => 28_561_922_517, :text => 'BOOSH'})
100
99
  expect(tweet.full_text).to be_a String
101
- expect(tweet.full_text).to eq("BOOSH")
100
+ expect(tweet.full_text).to eq('BOOSH')
102
101
  end
103
- it "returns the full text of a retweeted Tweet" do
104
- tweet = Twitter::Tweet.new(:id => 28669546014, :text => "RT @sferik: BOOSH", :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
102
+ it 'returns the full text of a retweeted Tweet' do
103
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :text => 'RT @sferik: BOOSH', :retweeted_status => {:id => 25_938_088_801, :text => 'BOOSH'})
105
104
  expect(tweet.full_text).to be_a String
106
- expect(tweet.full_text).to eq("RT @sferik: BOOSH")
105
+ expect(tweet.full_text).to eq('RT @sferik: BOOSH')
107
106
  end
108
- it "returns nil when retweeted_status is not set" do
109
- tweet = Twitter::Tweet.new(:id => 28669546014)
107
+ it 'returns nil when retweeted_status is not set' do
108
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
110
109
  expect(tweet.full_text).to be_nil
111
110
  end
112
111
  end
113
112
 
114
- describe "#geo" do
115
- it "returns a Twitter::Geo::Point when geo is set" do
116
- tweet = Twitter::Tweet.new(:id => 28669546014, :geo => {:id => 1, :type => "Point"})
113
+ describe '#geo' do
114
+ it 'returns a Twitter::Geo::Point when geo is set' do
115
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :geo => {:id => 1, :type => 'Point'})
117
116
  expect(tweet.geo).to be_a Twitter::Geo::Point
118
117
  end
119
- it "returns nil when geo is not set" do
120
- tweet = Twitter::Tweet.new(:id => 28669546014)
118
+ it 'returns nil when geo is not set' do
119
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
121
120
  expect(tweet.geo).to be_nil
122
121
  end
123
122
  end
124
123
 
125
- describe "#geo?" do
126
- it "returns true when geo is set" do
127
- tweet = Twitter::Tweet.new(:id => 28669546014, :geo => {:id => 1, :type => "Point"})
124
+ describe '#geo?' do
125
+ it 'returns true when geo is set' do
126
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :geo => {:id => 1, :type => 'Point'})
128
127
  expect(tweet.geo?).to be true
129
128
  end
130
- it "returns false when geo is not set" do
131
- tweet = Twitter::Tweet.new(:id => 28669546014)
129
+ it 'returns false when geo is not set' do
130
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
132
131
  expect(tweet.geo?).to be false
133
132
  end
134
133
  end
135
134
 
136
- describe "#hashtags" do
137
- it "returns an array of Entity::Hashtag when entities are set" do
135
+ describe '#hashtags' do
136
+ it 'returns an array of Entity::Hashtag when entities are set' do
138
137
  hashtags_array = [
139
138
  {
140
- :text => "twitter",
139
+ :text => 'twitter',
141
140
  :indices => [10, 33],
142
141
  }
143
142
  ]
144
- hashtags = Twitter::Tweet.new(:id => 28669546014, :entities => {:hashtags => hashtags_array}).hashtags
143
+ hashtags = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:hashtags => hashtags_array}).hashtags
145
144
  expect(hashtags).to be_an Array
146
145
  expect(hashtags.first).to be_a Twitter::Entity::Hashtag
147
146
  expect(hashtags.first.indices).to eq([10, 33])
148
- expect(hashtags.first.text).to eq("twitter")
147
+ expect(hashtags.first.text).to eq('twitter')
149
148
  end
150
- it "is empty when not set" do
151
- hashtags = Twitter::Tweet.new(:id => 28669546014).hashtags
149
+ it 'is empty when not set' do
150
+ hashtags = Twitter::Tweet.new(:id => 28_669_546_014).hashtags
152
151
  expect(hashtags).to be_empty
153
152
  end
154
- it "warns when not set" do
155
- Twitter::Tweet.new(:id => 28669546014).hashtags
153
+ it 'warns when not set' do
154
+ Twitter::Tweet.new(:id => 28_669_546_014).hashtags
156
155
  expect($stderr.string).to match(/To get hashtags, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
157
156
  end
158
157
  end
159
158
 
160
- describe "#media" do
161
- it "returns media" do
162
- media = Twitter::Tweet.new(:id => 28669546014, :entities => {:media => [{:id => 1, :type => "photo"}]}).media
159
+ describe '#media' do
160
+ it 'returns media' do
161
+ media = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:media => [{:id => 1, :type => 'photo'}]}).media
163
162
  expect(media).to be_an Array
164
163
  expect(media.first).to be_a Twitter::Media::Photo
165
164
  end
166
- it "is empty when not set" do
167
- media = Twitter::Tweet.new(:id => 28669546014).media
165
+ it 'is empty when not set' do
166
+ media = Twitter::Tweet.new(:id => 28_669_546_014).media
168
167
  expect(media).to be_empty
169
168
  end
170
- it "warns when not set" do
171
- Twitter::Tweet.new(:id => 28669546014).media
169
+ it 'warns when not set' do
170
+ Twitter::Tweet.new(:id => 28_669_546_014).media
172
171
  expect($stderr.string).to match(/To get media, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
173
172
  end
174
173
  end
175
174
 
176
- describe "#metadata" do
177
- it "returns a Twitter::Metadata when metadata is set" do
178
- tweet = Twitter::Tweet.new(:id => 28669546014, :metadata => {})
175
+ describe '#metadata' do
176
+ it 'returns a Twitter::Metadata when metadata is set' do
177
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :metadata => {})
179
178
  expect(tweet.metadata).to be_a Twitter::Metadata
180
179
  end
181
- it "returns nil when metadata is not set" do
182
- tweet = Twitter::Tweet.new(:id => 28669546014)
180
+ it 'returns nil when metadata is not set' do
181
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
183
182
  expect(tweet.metadata).to be_nil
184
183
  end
185
184
  end
186
185
 
187
- describe "#metadata?" do
188
- it "returns true when metadata is set" do
189
- tweet = Twitter::Tweet.new(:id => 28669546014, :metadata => {})
186
+ describe '#metadata?' do
187
+ it 'returns true when metadata is set' do
188
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :metadata => {})
190
189
  expect(tweet.metadata?).to be true
191
190
  end
192
- it "returns false when metadata is not set" do
193
- tweet = Twitter::Tweet.new(:id => 28669546014)
191
+ it 'returns false when metadata is not set' do
192
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
194
193
  expect(tweet.metadata?).to be false
195
194
  end
196
195
  end
197
196
 
198
- describe "#place" do
199
- it "returns a Twitter::Place when place is set" do
200
- tweet = Twitter::Tweet.new(:id => 28669546014, :place => {:id => "247f43d441defc03"})
197
+ describe '#place' do
198
+ it 'returns a Twitter::Place when place is set' do
199
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :place => {:id => '247f43d441defc03'})
201
200
  expect(tweet.place).to be_a Twitter::Place
202
201
  end
203
- it "returns nil when place is not set" do
204
- tweet = Twitter::Tweet.new(:id => 28669546014)
202
+ it 'returns nil when place is not set' do
203
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
205
204
  expect(tweet.place).to be_nil
206
205
  end
207
206
  end
208
207
 
209
- describe "#place?" do
210
- it "returns true when place is set" do
211
- tweet = Twitter::Tweet.new(:id => 28669546014, :place => {:id => "247f43d441defc03"})
208
+ describe '#place?' do
209
+ it 'returns true when place is set' do
210
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :place => {:id => '247f43d441defc03'})
212
211
  expect(tweet.place?).to be true
213
212
  end
214
- it "returns false when place is not set" do
215
- tweet = Twitter::Tweet.new(:id => 28669546014)
213
+ it 'returns false when place is not set' do
214
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
216
215
  expect(tweet.place?).to be false
217
216
  end
218
217
  end
219
218
 
220
- describe "#reply?" do
221
- it "returns true when there is an in-reply-to status" do
222
- tweet = Twitter::Tweet.new(:id => 28669546014, :in_reply_to_status_id => 114749583439036416)
219
+ describe '#reply?' do
220
+ it 'returns true when there is an in-reply-to status' do
221
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :in_reply_to_status_id => 114_749_583_439_036_416)
223
222
  expect(tweet.reply?).to be true
224
223
  end
225
- it "returns false when in_reply_to_status_id is not set" do
226
- tweet = Twitter::Tweet.new(:id => 28669546014)
224
+ it 'returns false when in_reply_to_status_id is not set' do
225
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
227
226
  expect(tweet.reply?).to be false
228
227
  end
229
228
  end
230
229
 
231
- describe "#retweet?" do
232
- it "returns true when there is a retweeted status" do
233
- tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
230
+ describe '#retweet?' do
231
+ it 'returns true when there is a retweeted status' do
232
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :retweeted_status => {:id => 25_938_088_801, :text => 'BOOSH'})
234
233
  expect(tweet.retweet?).to be true
235
234
  end
236
- it "returns false when retweeted_status is not set" do
237
- tweet = Twitter::Tweet.new(:id => 28669546014)
235
+ it 'returns false when retweeted_status is not set' do
236
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
238
237
  expect(tweet.retweet?).to be false
239
238
  end
240
239
  end
241
240
 
242
- describe "#retweeted_status" do
243
- it "returns a Tweet when retweeted_status is set" do
244
- tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
241
+ describe '#retweeted_status' do
242
+ it 'returns a Tweet when retweeted_status is set' do
243
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :retweeted_status => {:id => 25_938_088_801, :text => 'BOOSH'})
245
244
  expect(tweet.retweeted_tweet).to be_a Twitter::Tweet
246
- expect(tweet.retweeted_tweet.text).to eq("BOOSH")
245
+ expect(tweet.retweeted_tweet.text).to eq('BOOSH')
247
246
  end
248
- it "returns nil when retweeted_status is not set" do
249
- tweet = Twitter::Tweet.new(:id => 28669546014)
247
+ it 'returns nil when retweeted_status is not set' do
248
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
250
249
  expect(tweet.retweeted_tweet).to be_nil
251
250
  end
252
251
  end
253
252
 
254
- describe "#retweeted_status?" do
255
- it "returns true when retweeted_status is set" do
256
- tweet = Twitter::Tweet.new(:id => 28669546014, :retweeted_status => {:id => 25938088801, :text => "BOOSH"})
253
+ describe '#retweeted_status?' do
254
+ it 'returns true when retweeted_status is set' do
255
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :retweeted_status => {:id => 25_938_088_801, :text => 'BOOSH'})
257
256
  expect(tweet.retweeted_status?).to be true
258
257
  end
259
- it "returns false when retweeted_status is not set" do
260
- tweet = Twitter::Tweet.new(:id => 28669546014)
258
+ it 'returns false when retweeted_status is not set' do
259
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
261
260
  expect(tweet.retweeted_status?).to be false
262
261
  end
263
262
  end
264
263
 
265
- describe "#symbols" do
266
- it "returns an array of Entity::Symbol when symbols are set" do
264
+ describe '#symbols' do
265
+ it 'returns an array of Entity::Symbol when symbols are set' do
267
266
  symbols_array = [
268
- { :text => "PEP", :indices => [114, 118] },
269
- { :text => "COKE", :indices => [128, 133] }
267
+ {:text => 'PEP', :indices => [114, 118]},
268
+ {:text => 'COKE', :indices => [128, 133]}
270
269
  ]
271
- symbols = Twitter::Tweet.new(:id => 28669546014, :entities => {:symbols => symbols_array}).symbols
270
+ symbols = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:symbols => symbols_array}).symbols
272
271
  expect(symbols).to be_an Array
273
272
  expect(symbols.size).to eq(2)
274
273
  expect(symbols.first).to be_a Twitter::Entity::Symbol
275
274
  expect(symbols.first.indices).to eq([114, 118])
276
- expect(symbols.first.text).to eq("PEP")
275
+ expect(symbols.first.text).to eq('PEP')
277
276
  end
278
- it "is empty when not set" do
279
- symbols = Twitter::Tweet.new(:id => 28669546014).symbols
277
+ it 'is empty when not set' do
278
+ symbols = Twitter::Tweet.new(:id => 28_669_546_014).symbols
280
279
  expect(symbols).to be_empty
281
280
  end
282
- it "warns when not set" do
283
- Twitter::Tweet.new(:id => 28669546014).symbols
281
+ it 'warns when not set' do
282
+ Twitter::Tweet.new(:id => 28_669_546_014).symbols
284
283
  expect($stderr.string).to match(/To get symbols, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
285
284
  end
286
285
  end
287
286
 
288
- describe "#uris" do
289
- it "returns an array of Entity::URIs when entities are set" do
287
+ describe '#uris' do
288
+ it 'returns an array of Entity::URIs when entities are set' do
290
289
  urls_array = [
291
290
  {
292
- :url => "http://example.com/t.co",
293
- :expanded_url => "http://example.com/expanded",
294
- :display_url => "example.com/expanded…",
291
+ :url => 'http://example.com/t.co',
292
+ :expanded_url => 'http://example.com/expanded',
293
+ :display_url => 'example.com/expanded…',
295
294
  :indices => [10, 33],
296
295
  }
297
296
  ]
298
- tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_array})
297
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:urls => urls_array})
299
298
  expect(tweet.uris).to be_an Array
300
299
  expect(tweet.uris.first).to be_a Twitter::Entity::URI
301
300
  expect(tweet.uris.first.indices).to eq([10, 33])
302
301
  expect(tweet.uris.first.display_uri).to be_a String
303
- expect(tweet.uris.first.display_uri).to eq("example.com/expanded…")
302
+ expect(tweet.uris.first.display_uri).to eq('example.com/expanded…')
304
303
  end
305
- it "is empty when not set" do
306
- tweet = Twitter::Tweet.new(:id => 28669546014)
304
+ it 'is empty when not set' do
305
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
307
306
  expect(tweet.uris).to be_empty
308
307
  end
309
- it "warns when not set" do
310
- Twitter::Tweet.new(:id => 28669546014).urls
308
+ it 'warns when not set' do
309
+ Twitter::Tweet.new(:id => 28_669_546_014).urls
311
310
  expect($stderr.string).to match(/To get urls, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
312
311
  end
312
+ it 'can handle strange urls' do
313
+ urls_array = [
314
+ {
315
+ :url => 'http://with_underscore.example.com/t.co',
316
+ :expanded_url => 'http://with_underscore.example.com/expanded',
317
+ :display_url => 'with_underscore.example.com/expanded…',
318
+ :indices => [10, 33],
319
+ }
320
+ ]
321
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:urls => urls_array})
322
+ uri = tweet.uris.first
323
+ expect { uri.url }.not_to raise_error
324
+ expect { uri.expanded_url }.not_to raise_error
325
+ expect { uri.display_url }.not_to raise_error
326
+ end
313
327
  end
314
328
 
315
- describe "#uri" do
316
- it "returns the URI to the tweet" do
317
- tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382, :screen_name => "sferik"})
318
- expect(tweet.uri).to be_a URI
319
- expect(tweet.uri.to_s).to eq("https://twitter.com/sferik/status/28669546014")
329
+ describe '#uri' do
330
+ it 'returns the URI to the tweet' do
331
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :user => {:id => 7_505_382, :screen_name => 'sferik'})
332
+ expect(tweet.uri).to be_a Addressable::URI
333
+ expect(tweet.uri.to_s).to eq('https://twitter.com/sferik/status/28669546014')
320
334
  end
321
335
  end
322
336
 
323
- describe "#user" do
324
- it "returns a User when user is set" do
325
- tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382})
337
+ describe '#user' do
338
+ it 'returns a User when user is set' do
339
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :user => {:id => 7_505_382})
326
340
  expect(tweet.user).to be_a Twitter::User
327
341
  end
328
- it "returns nil when user is not set" do
329
- tweet = Twitter::Tweet.new(:id => 28669546014)
342
+ it 'returns nil when user is not set' do
343
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
330
344
  expect(tweet.user).to be_nil
331
345
  end
332
- it "has a status is set" do
333
- tweet = Twitter::Tweet.new(:id => 28669546014, :text => "Tweet text.", :user => {:id => 7505382})
346
+ it 'has a status is set' do
347
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :text => 'Tweet text.', :user => {:id => 7_505_382})
334
348
  expect(tweet.user.status).to be_a Twitter::Tweet
335
- expect(tweet.user.status.id).to eq 28669546014
349
+ expect(tweet.user.status.id).to eq 28_669_546_014
336
350
  end
337
351
  end
338
352
 
339
- describe "#user?" do
340
- it "returns true when status is set" do
341
- tweet = Twitter::Tweet.new(:id => 28669546014, :user => {:id => 7505382})
353
+ describe '#user?' do
354
+ it 'returns true when status is set' do
355
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014, :user => {:id => 7_505_382})
342
356
  expect(tweet.user?).to be true
343
357
  end
344
- it "returns false when status is not set" do
345
- tweet = Twitter::Tweet.new(:id => 28669546014)
358
+ it 'returns false when status is not set' do
359
+ tweet = Twitter::Tweet.new(:id => 28_669_546_014)
346
360
  expect(tweet.user?).to be false
347
361
  end
348
362
  end
349
363
 
350
- describe "#user_mentions" do
351
- it "returns an array of Entity::UserMention when entities are set" do
364
+ describe '#user_mentions' do
365
+ it 'returns an array of Entity::UserMention when entities are set' do
352
366
  user_mentions_array = [
353
367
  {
354
- :screen_name => "sferik",
355
- :name => "Erik Michaels-Ober",
356
- :id_str => "7505382",
368
+ :screen_name => 'sferik',
369
+ :name => 'Erik Michaels-Ober',
370
+ :id_str => '7_505_382',
357
371
  :indices => [0, 6],
358
- :id => 7505382,
372
+ :id => 7_505_382,
359
373
  }
360
374
  ]
361
- user_mentions = Twitter::Tweet.new(:id => 28669546014, :entities => {:user_mentions => user_mentions_array}).user_mentions
375
+ user_mentions = Twitter::Tweet.new(:id => 28_669_546_014, :entities => {:user_mentions => user_mentions_array}).user_mentions
362
376
  expect(user_mentions).to be_an Array
363
377
  expect(user_mentions.first).to be_a Twitter::Entity::UserMention
364
378
  expect(user_mentions.first.indices).to eq([0, 6])
365
- expect(user_mentions.first.id).to eq(7505382)
379
+ expect(user_mentions.first.id).to eq(7_505_382)
366
380
  end
367
- it "is empty when not set" do
368
- user_mentions = Twitter::Tweet.new(:id => 28669546014).user_mentions
381
+ it 'is empty when not set' do
382
+ user_mentions = Twitter::Tweet.new(:id => 28_669_546_014).user_mentions
369
383
  expect(user_mentions).to be_empty
370
384
  end
371
- it "warns when not set" do
372
- Twitter::Tweet.new(:id => 28669546014).user_mentions
385
+ it 'warns when not set' do
386
+ Twitter::Tweet.new(:id => 28_669_546_014).user_mentions
373
387
  expect($stderr.string).to match(/To get user mentions, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
374
388
  end
375
389
  end