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.
Files changed (197) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG.md +30 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +386 -266
  5. data/lib/twitter.rb +4 -39
  6. data/lib/twitter/arguments.rb +11 -0
  7. data/lib/twitter/base.rb +89 -68
  8. data/lib/twitter/client.rb +69 -110
  9. data/lib/twitter/configuration.rb +7 -3
  10. data/lib/twitter/creatable.rb +2 -4
  11. data/lib/twitter/cursor.rb +50 -42
  12. data/lib/twitter/direct_message.rb +2 -11
  13. data/lib/twitter/entity/uri.rb +13 -0
  14. data/lib/twitter/enumerable.rb +15 -0
  15. data/lib/twitter/error.rb +55 -7
  16. data/lib/twitter/error/already_favorited.rb +1 -1
  17. data/lib/twitter/error/already_posted.rb +10 -0
  18. data/lib/twitter/error/already_retweeted.rb +1 -1
  19. data/lib/twitter/error/bad_gateway.rb +2 -3
  20. data/lib/twitter/error/bad_request.rb +2 -2
  21. data/lib/twitter/error/forbidden.rb +2 -2
  22. data/lib/twitter/error/gateway_timeout.rb +2 -3
  23. data/lib/twitter/error/internal_server_error.rb +2 -3
  24. data/lib/twitter/error/not_acceptable.rb +2 -2
  25. data/lib/twitter/error/not_found.rb +2 -2
  26. data/lib/twitter/error/service_unavailable.rb +2 -3
  27. data/lib/twitter/error/too_many_requests.rb +2 -2
  28. data/lib/twitter/error/unauthorized.rb +2 -2
  29. data/lib/twitter/error/unprocessable_entity.rb +2 -2
  30. data/lib/twitter/factory.rb +2 -8
  31. data/lib/twitter/geo_factory.rb +2 -2
  32. data/lib/twitter/geo_results.rb +36 -0
  33. data/lib/twitter/identity.rb +0 -22
  34. data/lib/twitter/list.rb +18 -4
  35. data/lib/twitter/media/photo.rb +3 -3
  36. data/lib/twitter/media_factory.rb +2 -2
  37. data/lib/twitter/null_object.rb +24 -0
  38. data/lib/twitter/oembed.rb +3 -2
  39. data/lib/twitter/place.rb +15 -9
  40. data/lib/twitter/profile_banner.rb +5 -3
  41. data/lib/twitter/rate_limit.rb +1 -17
  42. data/lib/twitter/relationship.rb +2 -10
  43. data/lib/twitter/rest/api/direct_messages.rb +135 -0
  44. data/lib/twitter/rest/api/favorites.rb +120 -0
  45. data/lib/twitter/rest/api/friends_and_followers.rb +290 -0
  46. data/lib/twitter/rest/api/help.rb +58 -0
  47. data/lib/twitter/rest/api/lists.rb +491 -0
  48. data/lib/twitter/rest/api/oauth.rb +45 -0
  49. data/lib/twitter/rest/api/places_and_geo.rb +104 -0
  50. data/lib/twitter/rest/api/saved_searches.rb +91 -0
  51. data/lib/twitter/rest/api/search.rb +37 -0
  52. data/lib/twitter/rest/api/spam_reporting.rb +29 -0
  53. data/lib/twitter/rest/api/suggested_users.rb +51 -0
  54. data/lib/twitter/rest/api/timelines.rb +202 -0
  55. data/lib/twitter/rest/api/trends.rb +58 -0
  56. data/lib/twitter/rest/api/tweets.rb +293 -0
  57. data/lib/twitter/rest/api/undocumented.rb +52 -0
  58. data/lib/twitter/rest/api/users.rb +383 -0
  59. data/lib/twitter/rest/api/utils.rb +219 -0
  60. data/lib/twitter/rest/client.rb +193 -0
  61. data/lib/twitter/rest/request/multipart_with_file.rb +36 -0
  62. data/lib/twitter/rest/response/parse_json.rb +27 -0
  63. data/lib/twitter/{response → rest/response}/raise_error.rb +8 -11
  64. data/lib/twitter/search_results.rb +33 -21
  65. data/lib/twitter/settings.rb +1 -6
  66. data/lib/twitter/size.rb +1 -1
  67. data/lib/twitter/streaming/client.rb +77 -0
  68. data/lib/twitter/streaming/connection.rb +22 -0
  69. data/lib/twitter/streaming/response.rb +30 -0
  70. data/lib/twitter/suggestion.rb +4 -2
  71. data/lib/twitter/token.rb +8 -0
  72. data/lib/twitter/trend.rb +2 -1
  73. data/lib/twitter/trend_results.rb +59 -0
  74. data/lib/twitter/tweet.rb +41 -85
  75. data/lib/twitter/user.rb +51 -41
  76. data/lib/twitter/version.rb +4 -4
  77. data/spec/fixtures/already_posted.json +1 -0
  78. data/spec/fixtures/ids_list.json +1 -1
  79. data/spec/fixtures/ids_list2.json +1 -1
  80. data/spec/fixtures/search.json +1 -1
  81. data/spec/fixtures/search_malformed.json +1 -1
  82. data/spec/fixtures/track_streaming.json +3 -0
  83. data/spec/helper.rb +8 -13
  84. data/spec/twitter/base_spec.rb +25 -99
  85. data/spec/twitter/configuration_spec.rb +1 -1
  86. data/spec/twitter/cursor_spec.rb +13 -31
  87. data/spec/twitter/direct_message_spec.rb +41 -8
  88. data/spec/twitter/entity/uri_spec.rb +74 -0
  89. data/spec/twitter/error_spec.rb +59 -11
  90. data/spec/twitter/geo/point_spec.rb +1 -1
  91. data/spec/twitter/geo_factory_spec.rb +3 -3
  92. data/spec/twitter/geo_results_spec.rb +35 -0
  93. data/spec/twitter/identifiable_spec.rb +0 -21
  94. data/spec/twitter/list_spec.rb +51 -8
  95. data/spec/twitter/media/photo_spec.rb +118 -3
  96. data/spec/twitter/media_factory_spec.rb +2 -2
  97. data/spec/twitter/null_object_spec.rb +26 -0
  98. data/spec/twitter/oembed_spec.rb +69 -45
  99. data/spec/twitter/place_spec.rb +68 -12
  100. data/spec/twitter/profile_banner_spec.rb +1 -1
  101. data/spec/twitter/rate_limit_spec.rb +12 -12
  102. data/spec/twitter/relationship_spec.rb +31 -9
  103. data/spec/twitter/{api → rest/api}/direct_messages_spec.rb +22 -9
  104. data/spec/twitter/{api → rest/api}/favorites_spec.rb +80 -7
  105. data/spec/twitter/{api → rest/api}/friends_and_followers_spec.rb +104 -65
  106. data/spec/twitter/{api → rest/api}/geo_spec.rb +10 -10
  107. data/spec/twitter/{api → rest/api}/help_spec.rb +6 -6
  108. data/spec/twitter/{api → rest/api}/lists_spec.rb +77 -56
  109. data/spec/twitter/{api → rest/api}/oauth_spec.rb +6 -6
  110. data/spec/twitter/{api → rest/api}/saved_searches_spec.rb +7 -7
  111. data/spec/twitter/{api → rest/api}/search_spec.rb +8 -9
  112. data/spec/twitter/{api → rest/api}/spam_reporting_spec.rb +3 -3
  113. data/spec/twitter/{api → rest/api}/suggested_users_spec.rb +5 -5
  114. data/spec/twitter/{api → rest/api}/timelines_spec.rb +9 -9
  115. data/spec/twitter/{api → rest/api}/trends_spec.rb +6 -6
  116. data/spec/twitter/rest/api/tweets_spec.rb +503 -0
  117. data/spec/twitter/{api → rest/api}/undocumented_spec.rb +19 -45
  118. data/spec/twitter/{api → rest/api}/users_spec.rb +60 -35
  119. data/spec/twitter/rest/client_spec.rb +193 -0
  120. data/spec/twitter/saved_search_spec.rb +11 -0
  121. data/spec/twitter/search_results_spec.rb +29 -42
  122. data/spec/twitter/settings_spec.rb +17 -6
  123. data/spec/twitter/streaming/client_spec.rb +75 -0
  124. data/spec/twitter/token_spec.rb +16 -0
  125. data/spec/twitter/trend_results_spec.rb +89 -0
  126. data/spec/twitter/trend_spec.rb +23 -0
  127. data/spec/twitter/tweet_spec.rb +122 -115
  128. data/spec/twitter/user_spec.rb +136 -77
  129. data/spec/twitter_spec.rb +0 -119
  130. data/twitter.gemspec +8 -5
  131. metadata +148 -141
  132. metadata.gz.sig +0 -0
  133. data/lib/twitter/action/favorite.rb +0 -19
  134. data/lib/twitter/action/follow.rb +0 -30
  135. data/lib/twitter/action/list_member_added.rb +0 -39
  136. data/lib/twitter/action/mention.rb +0 -46
  137. data/lib/twitter/action/reply.rb +0 -27
  138. data/lib/twitter/action/retweet.rb +0 -27
  139. data/lib/twitter/action/tweet.rb +0 -20
  140. data/lib/twitter/action_factory.rb +0 -22
  141. data/lib/twitter/api/arguments.rb +0 -13
  142. data/lib/twitter/api/direct_messages.rb +0 -148
  143. data/lib/twitter/api/favorites.rb +0 -126
  144. data/lib/twitter/api/friends_and_followers.rb +0 -334
  145. data/lib/twitter/api/help.rb +0 -64
  146. data/lib/twitter/api/lists.rb +0 -618
  147. data/lib/twitter/api/oauth.rb +0 -44
  148. data/lib/twitter/api/places_and_geo.rb +0 -121
  149. data/lib/twitter/api/saved_searches.rb +0 -99
  150. data/lib/twitter/api/search.rb +0 -37
  151. data/lib/twitter/api/spam_reporting.rb +0 -30
  152. data/lib/twitter/api/suggested_users.rb +0 -55
  153. data/lib/twitter/api/timelines.rb +0 -214
  154. data/lib/twitter/api/trends.rb +0 -63
  155. data/lib/twitter/api/tweets.rb +0 -304
  156. data/lib/twitter/api/undocumented.rb +0 -97
  157. data/lib/twitter/api/users.rb +0 -439
  158. data/lib/twitter/api/utils.rb +0 -187
  159. data/lib/twitter/configurable.rb +0 -96
  160. data/lib/twitter/default.rb +0 -102
  161. data/lib/twitter/entity/url.rb +0 -9
  162. data/lib/twitter/error/client_error.rb +0 -35
  163. data/lib/twitter/error/decode_error.rb +0 -9
  164. data/lib/twitter/error/identity_map_key_error.rb +0 -9
  165. data/lib/twitter/error/server_error.rb +0 -28
  166. data/lib/twitter/exceptable.rb +0 -36
  167. data/lib/twitter/identity_map.rb +0 -22
  168. data/lib/twitter/request/multipart_with_file.rb +0 -34
  169. data/lib/twitter/response/parse_json.rb +0 -25
  170. data/spec/fixtures/about_me.json +0 -1
  171. data/spec/fixtures/activity_summary.json +0 -1
  172. data/spec/fixtures/bad_gateway.json +0 -1
  173. data/spec/fixtures/bad_request.json +0 -1
  174. data/spec/fixtures/by_friends.json +0 -1
  175. data/spec/fixtures/end_session.json +0 -1
  176. data/spec/fixtures/forbidden.json +0 -1
  177. data/spec/fixtures/internal_server_error.json +0 -1
  178. data/spec/fixtures/not_acceptable.json +0 -1
  179. data/spec/fixtures/phoenix_search.phoenix +0 -1
  180. data/spec/fixtures/resolve.json +0 -1
  181. data/spec/fixtures/service_unavailable.json +0 -1
  182. data/spec/fixtures/totals.json +0 -1
  183. data/spec/fixtures/trends.json +0 -1
  184. data/spec/fixtures/unauthorized.json +0 -1
  185. data/spec/fixtures/video_facets.json +0 -1
  186. data/spec/twitter/action/favorite_spec.rb +0 -29
  187. data/spec/twitter/action/follow_spec.rb +0 -29
  188. data/spec/twitter/action/list_member_added_spec.rb +0 -41
  189. data/spec/twitter/action/mention_spec.rb +0 -52
  190. data/spec/twitter/action/reply_spec.rb +0 -41
  191. data/spec/twitter/action/retweet_spec.rb +0 -41
  192. data/spec/twitter/action_factory_spec.rb +0 -35
  193. data/spec/twitter/action_spec.rb +0 -16
  194. data/spec/twitter/api/tweets_spec.rb +0 -285
  195. data/spec/twitter/client_spec.rb +0 -223
  196. data/spec/twitter/error/client_error_spec.rb +0 -23
  197. data/spec/twitter/error/server_error_spec.rb +0 -20
@@ -31,25 +31,58 @@ describe Twitter::DirectMessage do
31
31
  end
32
32
  end
33
33
 
34
+ describe "#created?" do
35
+ it "returns true when created_at is set" do
36
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
37
+ expect(direct_message.created?).to be_true
38
+ end
39
+ it "returns false when created_at is not set" do
40
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345)
41
+ expect(direct_message.created?).to be_false
42
+ end
43
+ end
44
+
34
45
  describe "#recipient" do
35
46
  it "returns a User when recipient is set" do
36
- recipient = Twitter::DirectMessage.new(:id => 1825786345, :recipient => {:id => 7505382}).recipient
37
- expect(recipient).to be_a Twitter::User
47
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345, :recipient => {:id => 7505382})
48
+ expect(direct_message.recipient).to be_a Twitter::User
38
49
  end
39
50
  it "returns nil when recipient is not set" do
40
- recipient = Twitter::DirectMessage.new(:id => 1825786345).recipient
41
- expect(recipient).to be_nil
51
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345)
52
+ expect(direct_message.recipient).to be_nil
53
+ end
54
+ end
55
+
56
+ describe "#recipient?" do
57
+ it "returns true when recipient is set" do
58
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345, :recipient => {:id => 7505382})
59
+ expect(direct_message.recipient?).to be_true
60
+ end
61
+ it "returns false when recipient is not set" do
62
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345)
63
+ expect(direct_message.recipient?).to be_false
42
64
  end
43
65
  end
44
66
 
45
67
  describe "#sender" do
46
68
  it "returns a User when sender is set" do
47
- sender = Twitter::DirectMessage.new(:id => 1825786345, :sender => {:id => 7505382}).sender
48
- expect(sender).to be_a Twitter::User
69
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345, :sender => {:id => 7505382})
70
+ expect(direct_message.sender).to be_a Twitter::User
49
71
  end
50
72
  it "returns nil when sender is not set" do
51
- sender = Twitter::DirectMessage.new(:id => 1825786345).sender
52
- expect(sender).to be_nil
73
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345)
74
+ expect(direct_message.sender).to be_nil
75
+ end
76
+ end
77
+
78
+ describe "#sender?" do
79
+ it "returns true when sender is set" do
80
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345, :sender => {:id => 7505382})
81
+ expect(direct_message.sender?).to be_true
82
+ end
83
+ it "returns false when sender is not set" do
84
+ direct_message = Twitter::DirectMessage.new(:id => 1825786345)
85
+ expect(direct_message.sender?).to be_false
53
86
  end
54
87
  end
55
88
 
@@ -0,0 +1,74 @@
1
+ require 'helper'
2
+
3
+ describe Twitter::Entity::URI do
4
+
5
+ describe "#display_uri" do
6
+ it "returns a URI when the display_url is set" do
7
+ uri = Twitter::Entity::URI.new(:display_url => "https://github.com/sferik")
8
+ expect(uri.display_uri).to be_a URI
9
+ expect(uri.display_uri.to_s).to eq("https://github.com/sferik")
10
+ end
11
+ it "returns nil when the display_url is not set" do
12
+ uri = Twitter::Entity::URI.new
13
+ expect(uri.display_uri).to be_nil
14
+ end
15
+ end
16
+
17
+ describe "#display_uri?" do
18
+ it "returns true when the display_url is set" do
19
+ uri = Twitter::Entity::URI.new(:display_url => "https://github.com/sferik")
20
+ expect(uri.display_uri).to be_true
21
+ end
22
+ it "returns false when the display_url is not set" do
23
+ uri = Twitter::Entity::URI.new
24
+ expect(uri.display_uri).to be_false
25
+ end
26
+ end
27
+
28
+ describe "#expanded_uri" do
29
+ it "returns a URI when the expanded_url is set" do
30
+ uri = Twitter::Entity::URI.new(:expanded_url => "https://github.com/sferik")
31
+ expect(uri.expanded_uri).to be_a URI
32
+ expect(uri.expanded_uri.to_s).to eq("https://github.com/sferik")
33
+ end
34
+ it "returns nil when the expanded_url is not set" do
35
+ uri = Twitter::Entity::URI.new
36
+ expect(uri.expanded_uri).to be_nil
37
+ end
38
+ end
39
+
40
+ describe "#expanded_uri?" do
41
+ it "returns true when the expanded_url is set" do
42
+ uri = Twitter::Entity::URI.new(:expanded_url => "https://github.com/sferik")
43
+ expect(uri.expanded_uri).to be_true
44
+ end
45
+ it "returns false when the expanded_url is not set" do
46
+ uri = Twitter::Entity::URI.new
47
+ expect(uri.expanded_uri).to be_false
48
+ end
49
+ end
50
+
51
+ describe "#uri" do
52
+ it "returns a URI when the url is set" do
53
+ uri = Twitter::Entity::URI.new(:url => "https://github.com/sferik")
54
+ expect(uri.uri).to be_a URI
55
+ expect(uri.uri.to_s).to eq("https://github.com/sferik")
56
+ end
57
+ it "returns nil when the url is not set" do
58
+ uri = Twitter::Entity::URI.new
59
+ expect(uri.uri).to be_nil
60
+ end
61
+ end
62
+
63
+ describe "#uri?" do
64
+ it "returns true when the url is set" do
65
+ uri = Twitter::Entity::URI.new(:url => "https://github.com/sferik")
66
+ expect(uri.uri).to be_true
67
+ end
68
+ it "returns false when the url is not set" do
69
+ uri = Twitter::Entity::URI.new
70
+ expect(uri.uri).to be_false
71
+ end
72
+ end
73
+
74
+ end
@@ -2,19 +2,67 @@ require 'helper'
2
2
 
3
3
  describe Twitter::Error do
4
4
 
5
- describe "#initialize" do
6
- it "wraps another error class" do
7
- begin
8
- raise Faraday::Error::ClientError.new("Oops")
9
- rescue Faraday::Error::ClientError
10
- begin
11
- raise Twitter::Error
12
- rescue Twitter::Error => error
13
- expect(error.message).to eq "Oops"
14
- expect(error.wrapped_exception.class).to eq Faraday::Error::ClientError
5
+ before do
6
+ @client = Twitter::REST::Client.new(:consumer_key => "CK", :consumer_secret => "CS", :access_token => "AT", :access_token_secret => "AS")
7
+ end
8
+
9
+ describe "#message" do
10
+ it "returns the message of the wrapped exception" do
11
+ error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops"))
12
+ expect(error.message).to eq("Oops")
13
+ end
14
+ end
15
+
16
+ describe "#rate_limit" do
17
+ it "returns the wrapped exception" do
18
+ error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops"))
19
+ expect(error.rate_limit).to be_a Twitter::RateLimit
20
+ end
21
+ end
22
+
23
+ describe "#wrapped_exception" do
24
+ it "returns the wrapped exception" do
25
+ error = Twitter::Error.new(Faraday::Error::ClientError.new("Oops"))
26
+ expect(error.wrapped_exception.class).to eq(Faraday::Error::ClientError)
27
+ end
28
+ end
29
+
30
+ Twitter::Error.errors.each do |status, exception|
31
+
32
+ [nil, "error", "errors"].each do |body|
33
+ context "when HTTP status is #{status} and body is #{body.inspect}" do
34
+ before do
35
+ body_message = '{"' + body + '":"Client Error"}' unless body.nil?
36
+ stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message)
37
+ end
38
+ it "raises #{exception.name}" do
39
+ expect{@client.user_timeline("sferik")}.to raise_error exception
15
40
  end
16
41
  end
17
42
  end
18
- end
19
43
 
44
+ context "when HTTP status is #{status} and body is errors" do
45
+ context "when errors is an array of hashes" do
46
+ context "when error code is nil" do
47
+ before do
48
+ body_message = '{"errors":[{"message":"Client Error"}]}'
49
+ stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message)
50
+ end
51
+ it "raises #{exception.name}" do
52
+ expect{@client.user_timeline("sferik")}.to raise_error{|error| expect(error.code).to be_nil}
53
+ end
54
+ context "when error code is 187" do
55
+ before do
56
+ body_message = '{"errors":[{"message":"Client Error","code":187}]}'
57
+ stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik"}).to_return(:status => status, :body => body_message)
58
+ end
59
+ it "raises #{exception.name}" do
60
+ expect{@client.user_timeline("sferik")}.to raise_error{|error| expect(error.code).to eq(187)}
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ end
20
68
  end
@@ -34,7 +34,7 @@ describe Twitter::Geo::Point do
34
34
 
35
35
  describe "#longitude" do
36
36
  it "returns the longitude" do
37
- expect(@point.longitude).to eq 37.788299
37
+ expect(@point.longitude).to eq(37.788299)
38
38
  end
39
39
  end
40
40
 
@@ -4,15 +4,15 @@ describe Twitter::GeoFactory do
4
4
 
5
5
  describe ".new" do
6
6
  it "generates a Point" do
7
- geo = Twitter::GeoFactory.fetch_or_new(:type => 'Point')
7
+ geo = Twitter::GeoFactory.new(:type => "Point")
8
8
  expect(geo).to be_a Twitter::Geo::Point
9
9
  end
10
10
  it "generates a Polygon" do
11
- geo = Twitter::GeoFactory.fetch_or_new(:type => 'Polygon')
11
+ geo = Twitter::GeoFactory.new(:type => "Polygon")
12
12
  expect(geo).to be_a Twitter::Geo::Polygon
13
13
  end
14
14
  it "raises an ArgumentError when type is not specified" do
15
- expect{Twitter::GeoFactory.fetch_or_new}.to raise_error ArgumentError
15
+ expect{Twitter::GeoFactory.new}.to raise_error ArgumentError
16
16
  end
17
17
  end
18
18
 
@@ -0,0 +1,35 @@
1
+ require 'helper'
2
+
3
+ describe Twitter::GeoResults do
4
+
5
+ describe "#each" do
6
+ before do
7
+ @geo_results = Twitter::GeoResults.new(:result => {:places => [{:id => 1}, {:id => 2}, {:id => 3}, {:id => 4}, {:id => 5}, {:id => 6}]})
8
+ end
9
+ it "iterates" do
10
+ count = 0
11
+ @geo_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
+ @geo_results.each(5){count += 1}
18
+ expect(count).to eq(1)
19
+ end
20
+ end
21
+ end
22
+
23
+ describe "#token" do
24
+ it "returns a String when token is set" do
25
+ geo_results = Twitter::GeoResults.new(:result => {}, :token => "abc123")
26
+ expect(geo_results.token).to be_a String
27
+ expect(geo_results.token).to eq("abc123")
28
+ end
29
+ it "returns nil when token is not set" do
30
+ geo_results = Twitter::GeoResults.new(:result => {})
31
+ expect(geo_results.token).to be_nil
32
+ end
33
+ end
34
+
35
+ end
@@ -8,27 +8,6 @@ describe Twitter::Identity do
8
8
  end
9
9
  end
10
10
 
11
- context "identity map enabled" do
12
- before do
13
- Twitter.identity_map = Twitter::IdentityMap
14
- end
15
-
16
- after do
17
- Twitter.identity_map = false
18
- end
19
-
20
- describe ".fetch" do
21
- it "returns existing objects" do
22
- Twitter::Identity.store(Twitter::Identity.new(:id => 1))
23
- expect(Twitter::Identity.fetch(:id => 1)).to be
24
- end
25
-
26
- it "raises an error on objects that don't exist" do
27
- expect{Twitter::Identity.fetch(:id => 6)}.to raise_error Twitter::Error::IdentityMapKeyError
28
- end
29
- end
30
- end
31
-
32
11
  describe "#==" do
33
12
  it "returns true when objects IDs are the same" do
34
13
  one = Twitter::Identity.new(:id => 1, :screen_name => "sferik")
@@ -22,23 +22,66 @@ describe Twitter::List do
22
22
 
23
23
  describe "#created_at" do
24
24
  it "returns a Time when created_at is set" do
25
- user = Twitter::List.new(:id => 8863586, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
26
- expect(user.created_at).to be_a Time
25
+ list = Twitter::List.new(:id => 8863586, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
26
+ expect(list.created_at).to be_a Time
27
27
  end
28
28
  it "returns nil when created_at is not set" do
29
- user = Twitter::List.new(:id => 8863586)
30
- expect(user.created_at).to be_nil
29
+ list = Twitter::List.new(:id => 8863586)
30
+ expect(list.created_at).to be_nil
31
+ end
32
+ end
33
+
34
+ describe "#created?" do
35
+ it "returns true when created_at is set" do
36
+ list = Twitter::List.new(:id => 8863586, :created_at => "Mon Jul 16 12:59:01 +0000 2007")
37
+ expect(list.created?).to be_true
38
+ end
39
+ it "returns false when created_at is not set" do
40
+ list = Twitter::List.new(:id => 8863586)
41
+ expect(list.created?).to be_false
42
+ end
43
+ end
44
+
45
+ describe "#members_uri" do
46
+ it "returns the URI to the list members" do
47
+ list = Twitter::List.new(:id => 8863586, :slug => "presidents", :user => {:id => 7505382, :screen_name => "sferik"})
48
+ expect(list.members_uri.to_s).to eq("https://twitter.com/sferik/presidents/members")
49
+ end
50
+ end
51
+
52
+ describe "#subscribers_uri" do
53
+ it "returns the URI to the list subscribers" do
54
+ list = Twitter::List.new(:id => 8863586, :slug => "presidents", :user => {:id => 7505382, :screen_name => "sferik"})
55
+ expect(list.subscribers_uri.to_s).to eq("https://twitter.com/sferik/presidents/subscribers")
56
+ end
57
+ end
58
+
59
+ describe "#uri" do
60
+ it "returns the URI to the list" do
61
+ list = Twitter::List.new(:id => 8863586, :slug => "presidents", :user => {:id => 7505382, :screen_name => "sferik"})
62
+ expect(list.uri.to_s).to eq("https://twitter.com/sferik/presidents")
31
63
  end
32
64
  end
33
65
 
34
66
  describe "#user" do
35
67
  it "returns a User when user is set" do
36
- user = Twitter::List.new(:id => 8863586, :user => {:id => 7505382}).user
37
- expect(user).to be_a Twitter::User
68
+ list = Twitter::List.new(:id => 8863586, :user => {:id => 7505382})
69
+ expect(list.user).to be_a Twitter::User
38
70
  end
39
71
  it "returns nil when status is not set" do
40
- user = Twitter::List.new(:id => 8863586).user
41
- expect(user).to be_nil
72
+ list = Twitter::List.new(:id => 8863586)
73
+ expect(list.user).to be_nil
74
+ end
75
+ end
76
+
77
+ describe "#user?" do
78
+ it "returns true when user is set" do
79
+ list = Twitter::List.new(:id => 8863586, :user => {:id => 7505382})
80
+ expect(list.user?).to be_true
81
+ end
82
+ it "returns false when user is not set" do
83
+ list = Twitter::List.new(:id => 8863586)
84
+ expect(list.user?).to be_false
42
85
  end
43
86
  end
44
87
 
@@ -4,8 +4,8 @@ describe Twitter::Media::Photo do
4
4
 
5
5
  describe "#==" do
6
6
  it "returns true when objects IDs are the same" do
7
- photo = Twitter::Media::Photo.new(:id => 1, :url => "foo")
8
- other = Twitter::Media::Photo.new(:id => 1, :url => "bar")
7
+ photo = Twitter::Media::Photo.new(:id => 1)
8
+ other = Twitter::Media::Photo.new(:id => 1)
9
9
  expect(photo == other).to be_true
10
10
  end
11
11
  it "returns false when objects IDs are different" do
@@ -22,7 +22,7 @@ describe Twitter::Media::Photo do
22
22
 
23
23
  describe "#sizes" do
24
24
  it "returns a hash of Sizes when sizes is set" do
25
- sizes = Twitter::Media::Photo.new(:id => 110102452988157952, :sizes => {:small => {:h => 226, :w => 340, :resize => 'fit'}, :large => {:h => 466, :w => 700, :resize => 'fit'}, :medium => {:h => 399, :w => 600, :resize => 'fit'}, :thumb => {:h => 150, :w => 150, :resize => 'crop'}}).sizes
25
+ sizes = Twitter::Media::Photo.new(:id => 110102452988157952, :sizes => {:small => {:h => 226, :w => 340, :resize => "fit"}, :large => {:h => 466, :w => 700, :resize => "fit"}, :medium => {:h => 399, :w => 600, :resize => "fit"}, :thumb => {:h => 150, :w => 150, :resize => "crop"}}).sizes
26
26
  expect(sizes).to be_a Hash
27
27
  expect(sizes[:small]).to be_a Twitter::Size
28
28
  end
@@ -32,4 +32,119 @@ describe Twitter::Media::Photo do
32
32
  end
33
33
  end
34
34
 
35
+ describe "#display_uri" do
36
+ it "returns a URI when the display_url is set" do
37
+ photo = Twitter::Media::Photo.new(:id => 1, :display_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
38
+ expect(photo.display_uri).to be_a URI
39
+ expect(photo.display_uri.to_s).to eq("http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
40
+ end
41
+ it "returns nil when the display_url is not set" do
42
+ photo = Twitter::Media::Photo.new(:id => 1)
43
+ expect(photo.display_uri).to be_nil
44
+ end
45
+ end
46
+
47
+ describe "#display_uri?" do
48
+ it "returns true when the display_url is set" do
49
+ photo = Twitter::Media::Photo.new(:id => 1, :display_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
50
+ expect(photo.display_uri).to be_true
51
+ end
52
+ it "returns false when the display_url is not set" do
53
+ photo = Twitter::Media::Photo.new(:id => 1)
54
+ expect(photo.display_uri).to be_false
55
+ end
56
+ end
57
+
58
+ describe "#expanded_uri" do
59
+ it "returns a URI when the expanded_url is set" do
60
+ photo = Twitter::Media::Photo.new(:id => 1, :expanded_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
61
+ expect(photo.expanded_uri).to be_a URI
62
+ expect(photo.expanded_uri.to_s).to eq("http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
63
+ end
64
+ it "returns nil when the expanded_url is not set" do
65
+ photo = Twitter::Media::Photo.new(:id => 1)
66
+ expect(photo.expanded_uri).to be_nil
67
+ end
68
+ end
69
+
70
+ describe "#expanded_uri?" do
71
+ it "returns true when the expanded_url is set" do
72
+ photo = Twitter::Media::Photo.new(:id => 1, :expanded_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
73
+ expect(photo.expanded_uri).to be_true
74
+ end
75
+ it "returns false when the expanded_url is not set" do
76
+ photo = Twitter::Media::Photo.new(:id => 1)
77
+ expect(photo.expanded_uri).to be_false
78
+ end
79
+ end
80
+
81
+ describe "#media_uri" do
82
+ it "returns a URI when the media_url is set" do
83
+ photo = Twitter::Media::Photo.new(:id => 1, :media_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
84
+ expect(photo.media_uri).to be_a URI
85
+ expect(photo.media_uri.to_s).to eq("http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
86
+ end
87
+ it "returns nil when the media_url is not set" do
88
+ photo = Twitter::Media::Photo.new(:id => 1)
89
+ expect(photo.media_uri).to be_nil
90
+ end
91
+ end
92
+
93
+ describe "#media_uri?" do
94
+ it "returns true when the media_url is set" do
95
+ photo = Twitter::Media::Photo.new(:id => 1, :media_url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
96
+ expect(photo.media_uri).to be_true
97
+ end
98
+ it "returns false when the media_url is not set" do
99
+ photo = Twitter::Media::Photo.new(:id => 1)
100
+ expect(photo.media_uri).to be_false
101
+ end
102
+ end
103
+
104
+ describe "#media_uri_https" do
105
+ it "returns a URI when the media_url_https is set" do
106
+ photo = Twitter::Media::Photo.new(:id => 1, :media_url_https => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
107
+ expect(photo.media_uri_https).to be_a URI
108
+ expect(photo.media_uri_https.to_s).to eq("http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
109
+ end
110
+ it "returns nil when the media_url_https is not set" do
111
+ photo = Twitter::Media::Photo.new(:id => 1)
112
+ expect(photo.media_uri_https).to be_nil
113
+ end
114
+ end
115
+
116
+ describe "#media_uri_https?" do
117
+ it "returns true when the media_url_https is set" do
118
+ photo = Twitter::Media::Photo.new(:id => 1, :media_url_https => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
119
+ expect(photo.media_uri_https).to be_true
120
+ end
121
+ it "returns false when the media_url_https is not set" do
122
+ photo = Twitter::Media::Photo.new(:id => 1)
123
+ expect(photo.media_uri_https).to be_false
124
+ end
125
+ end
126
+
127
+ describe "#uri" do
128
+ it "returns a URI when the url is set" do
129
+ photo = Twitter::Media::Photo.new(:id => 1, :url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
130
+ expect(photo.uri).to be_a URI
131
+ expect(photo.uri.to_s).to eq("http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
132
+ end
133
+ it "returns nil when the url is not set" do
134
+ photo = Twitter::Media::Photo.new(:id => 1)
135
+ expect(photo.uri).to be_nil
136
+ end
137
+ end
138
+
139
+ describe "#uri?" do
140
+ it "returns true when the url is set" do
141
+ photo = Twitter::Media::Photo.new(:id => 1, :url => "http://pbs.twimg.com/media/BQD6MPOCEAAbCH0.png")
142
+ expect(photo.uri).to be_true
143
+ end
144
+ it "returns false when the url is not set" do
145
+ photo = Twitter::Media::Photo.new(:id => 1)
146
+ expect(photo.uri).to be_false
147
+ end
148
+ end
149
+
35
150
  end