twitter 4.8.1 → 5.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
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