t 1.7.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/t/utils.rb CHANGED
@@ -50,7 +50,7 @@ module T
50
50
  def fetch_users(users, options, &block)
51
51
  format_users!(users, options)
52
52
  require 'retryable'
53
- users = retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
53
+ users = retryable(:tries => 3, :on => Twitter::Error, :sleep => 0) do
54
54
  yield users
55
55
  end
56
56
  [users, users.length]
@@ -95,26 +95,26 @@ module T
95
95
  "#{count || 0} " + ((count == 1 || count =~ /^1(\.0+)?$/) ? singular : (plural || "#{singular}s"))
96
96
  end
97
97
 
98
- def decode_full_text(tweet, decode_full_urls = false)
98
+ def decode_full_text(tweet, decode_full_uris = false)
99
99
  require 'htmlentities'
100
100
  text = HTMLEntities.new.decode(tweet.full_text)
101
- text = decode_urls(text, tweet.urls) if decode_full_urls
101
+ text = decode_uris(text, tweet.uris) if decode_full_uris
102
102
  text
103
103
  end
104
104
 
105
- def decode_urls(full_text, url_entities)
106
- return full_text if url_entities.nil?
105
+ def decode_uris(full_text, uri_entities)
106
+ return full_text if uri_entities.nil?
107
107
 
108
- url_entities.each do |url_hash|
109
- full_text = full_text.gsub(url_hash.url, url_hash.expanded_url)
108
+ uri_entities.each do |uri_entity|
109
+ full_text = full_text.gsub(uri_entity.uri.to_s, uri_entity.expanded_uri.to_s)
110
110
  end
111
111
 
112
112
  full_text
113
113
  end
114
114
 
115
- def open_or_print( url, options )
116
- Launchy.open( url, options ) do |e|
117
- say "Open: #{url}"
115
+ def open_or_print(uri, options)
116
+ Launchy.open(uri, options) do
117
+ say "Open: #{uri}"
118
118
  end
119
119
  end
120
120
  end
data/lib/t/version.rb CHANGED
@@ -4,17 +4,17 @@ module T
4
4
 
5
5
  # @return [Integer]
6
6
  def major
7
- 1
7
+ 2
8
8
  end
9
9
 
10
10
  # @return [Integer]
11
11
  def minor
12
- 7
12
+ 0
13
13
  end
14
14
 
15
15
  # @return [Integer]
16
16
  def patch
17
- 2
17
+ 0
18
18
  end
19
19
 
20
20
  # @return [String, NilClass]
data/spec/cli_spec.rb CHANGED
@@ -44,22 +44,22 @@ testcli
44
44
 
45
45
  describe "#authorize" do
46
46
  before do
47
- @cli.options = @cli.options.merge("profile" => project_path + "/tmp/authorize", "display-url" => true)
47
+ @cli.options = @cli.options.merge("profile" => project_path + "/tmp/authorize", "display-uri" => true)
48
48
  stub_post("/oauth/request_token").to_return(:body => fixture("request_token"))
49
49
  stub_post("/oauth/access_token").to_return(:body => fixture("access_token"))
50
50
  stub_get("/1.1/account/verify_credentials.json").with(:query => {:include_entities => "false", :skip_status => "true"}).to_return(:body => fixture("sferik.json"))
51
51
  end
52
52
  it "requests the correct resource" do
53
- $stdout.should_receive(:print)
54
- $stdin.should_receive(:gets).and_return("\n")
55
- $stdout.should_receive(:print).with("Enter your consumer key: ")
56
- $stdin.should_receive(:gets).and_return("abc123")
57
- $stdout.should_receive(:print).with("Enter your consumer secret: ")
58
- $stdin.should_receive(:gets).and_return("asdfasd223sd2")
59
- $stdout.should_receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
60
- $stdin.should_receive(:gets).and_return("\n")
61
- $stdout.should_receive(:print).with("Enter the supplied PIN: ")
62
- $stdin.should_receive(:gets).and_return("1234567890")
53
+ expect($stdout).to receive(:print)
54
+ expect($stdin).to receive(:gets).and_return("\n")
55
+ expect($stdout).to receive(:print).with("Enter your consumer key: ")
56
+ expect($stdin).to receive(:gets).and_return("abc123")
57
+ expect($stdout).to receive(:print).with("Enter your consumer secret: ")
58
+ expect($stdin).to receive(:gets).and_return("asdfasd223sd2")
59
+ expect($stdout).to receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
60
+ expect($stdin).to receive(:gets).and_return("\n")
61
+ expect($stdout).to receive(:print).with("Enter the supplied PIN: ")
62
+ expect($stdin).to receive(:gets).and_return("1234567890")
63
63
  @cli.authorize
64
64
  expect(a_post("/oauth/request_token")).to have_been_made
65
65
  expect(a_post("/oauth/access_token")).to have_been_made
@@ -67,37 +67,37 @@ testcli
67
67
  end
68
68
  it "does not raise error" do
69
69
  expect do
70
- $stdout.should_receive(:print)
71
- $stdin.should_receive(:gets).and_return("\n")
72
- $stdout.should_receive(:print).with("Enter your consumer key: ")
73
- $stdin.should_receive(:gets).and_return("abc123")
74
- $stdout.should_receive(:print).with("Enter your consumer secret: ")
75
- $stdin.should_receive(:gets).and_return("asdfasd223sd2")
76
- $stdout.should_receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
77
- $stdin.should_receive(:gets).and_return("\n")
78
- $stdout.should_receive(:print).with("Enter the supplied PIN: ")
79
- $stdin.should_receive(:gets).and_return("1234567890")
70
+ expect($stdout).to receive(:print)
71
+ expect($stdin).to receive(:gets).and_return("\n")
72
+ expect($stdout).to receive(:print).with("Enter your consumer key: ")
73
+ expect($stdin).to receive(:gets).and_return("abc123")
74
+ expect($stdout).to receive(:print).with("Enter your consumer secret: ")
75
+ expect($stdin).to receive(:gets).and_return("asdfasd223sd2")
76
+ expect($stdout).to receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
77
+ expect($stdin).to receive(:gets).and_return("\n")
78
+ expect($stdout).to receive(:print).with("Enter the supplied PIN: ")
79
+ expect($stdin).to receive(:gets).and_return("1234567890")
80
80
  @cli.authorize
81
81
  end.not_to raise_error
82
82
  end
83
83
  context "empty RC file" do
84
84
  before do
85
- @cli.options = @cli.options.merge("profile" => project_path + "/tmp/empty", "display-url" => true)
85
+ @cli.options = @cli.options.merge("profile" => project_path + "/tmp/empty", "display-uri" => true)
86
86
  end
87
87
  after do
88
88
  File.delete(project_path + "/tmp/empty")
89
89
  end
90
90
  it "requests the correct resource" do
91
- $stdout.should_receive(:print)
92
- $stdin.should_receive(:gets).and_return("\n")
93
- $stdout.should_receive(:print).with("Enter your consumer key: ")
94
- $stdin.should_receive(:gets).and_return("abc123")
95
- $stdout.should_receive(:print).with("Enter your consumer secret: ")
96
- $stdin.should_receive(:gets).and_return("asdfasd223sd2")
97
- $stdout.should_receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
98
- $stdin.should_receive(:gets).and_return("\n")
99
- $stdout.should_receive(:print).with("Enter the supplied PIN: ")
100
- $stdin.should_receive(:gets).and_return("1234567890")
91
+ expect($stdout).to receive(:print)
92
+ expect($stdin).to receive(:gets).and_return("\n")
93
+ expect($stdout).to receive(:print).with("Enter your consumer key: ")
94
+ expect($stdin).to receive(:gets).and_return("abc123")
95
+ expect($stdout).to receive(:print).with("Enter your consumer secret: ")
96
+ expect($stdin).to receive(:gets).and_return("asdfasd223sd2")
97
+ expect($stdout).to receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
98
+ expect($stdin).to receive(:gets).and_return("\n")
99
+ expect($stdout).to receive(:print).with("Enter the supplied PIN: ")
100
+ expect($stdin).to receive(:gets).and_return("1234567890")
101
101
  @cli.authorize
102
102
  expect(a_post("/oauth/request_token")).to have_been_made
103
103
  expect(a_post("/oauth/access_token")).to have_been_made
@@ -105,16 +105,16 @@ testcli
105
105
  end
106
106
  it "does not raise error" do
107
107
  expect do
108
- $stdout.should_receive(:print)
109
- $stdin.should_receive(:gets).and_return("\n")
110
- $stdout.should_receive(:print).with("Enter your consumer key: ")
111
- $stdin.should_receive(:gets).and_return("abc123")
112
- $stdout.should_receive(:print).with("Enter your consumer secret: ")
113
- $stdin.should_receive(:gets).and_return("asdfasd223sd2")
114
- $stdout.should_receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
115
- $stdin.should_receive(:gets).and_return("\n")
116
- $stdout.should_receive(:print).with("Enter the supplied PIN: ")
117
- $stdin.should_receive(:gets).and_return("1234567890")
108
+ expect($stdout).to receive(:print)
109
+ expect($stdin).to receive(:gets).and_return("\n")
110
+ expect($stdout).to receive(:print).with("Enter your consumer key: ")
111
+ expect($stdin).to receive(:gets).and_return("abc123")
112
+ expect($stdout).to receive(:print).with("Enter your consumer secret: ")
113
+ expect($stdin).to receive(:gets).and_return("asdfasd223sd2")
114
+ expect($stdout).to receive(:print).with("Press [Enter] to open the Twitter app authorization page. ")
115
+ expect($stdin).to receive(:gets).and_return("\n")
116
+ expect($stdout).to receive(:print).with("Enter the supplied PIN: ")
117
+ expect($stdin).to receive(:gets).and_return("1234567890")
118
118
  @cli.authorize
119
119
  end.not_to raise_error
120
120
  end
@@ -970,6 +970,16 @@ ID Posted at Screen name Text
970
970
  end
971
971
  end
972
972
  end
973
+ context "--max-id" do
974
+ before do
975
+ @cli.options = @cli.options.merge("max_id" => 244104558433951744)
976
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "20", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
977
+ end
978
+ it "requests the correct resource" do
979
+ @cli.favorites
980
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "20", :max_id => "244104558433951744"})).to have_been_made
981
+ end
982
+ end
973
983
  context "--number" do
974
984
  before do
975
985
  stub_get("/1.1/favorites/list.json").with(:query => {:count => "1"}).to_return(:body => fixture("statuses.json"))
@@ -988,6 +998,16 @@ ID Posted at Screen name Text
988
998
  expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "1", :max_id => "265500541700956160"})).to have_been_made
989
999
  end
990
1000
  end
1001
+ context "--since-id" do
1002
+ before do
1003
+ @cli.options = @cli.options.merge("since_id" => 244104558433951744)
1004
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "20", :since_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
1005
+ end
1006
+ it "requests the correct resource" do
1007
+ @cli.favorites
1008
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "20", :since_id => "244104558433951744"})).to have_been_made
1009
+ end
1010
+ end
991
1011
  context "with a user passed" do
992
1012
  before do
993
1013
  stub_get("/1.1/favorites/list.json").with(:query => {:count => "20", :screen_name => "sferik"}).to_return(:body => fixture("statuses.json"))
@@ -1006,6 +1026,44 @@ ID Posted at Screen name Text
1006
1026
  expect(a_get("/1.1/favorites/list.json").with(:query => {:user_id => "7505382", :count => "20"})).to have_been_made
1007
1027
  end
1008
1028
  end
1029
+ context "--max-id" do
1030
+ before do
1031
+ @cli.options = @cli.options.merge("max_id" => 244104558433951744)
1032
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "20", :screen_name => "sferik", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
1033
+ end
1034
+ it "requests the correct resource" do
1035
+ @cli.favorites("sferik")
1036
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "20", :screen_name => "sferik", :max_id => "244104558433951744"})).to have_been_made
1037
+ end
1038
+ end
1039
+ context "--number" do
1040
+ before do
1041
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "1", :screen_name => "sferik"}).to_return(:body => fixture("statuses.json"))
1042
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "200", :screen_name => "sferik"}).to_return(:body => fixture("200_statuses.json"))
1043
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "1", :screen_name => "sferik", :max_id => "265500541700956160"}).to_return(:body => fixture("statuses.json"))
1044
+ end
1045
+ it "limits the number of results to 1" do
1046
+ @cli.options = @cli.options.merge("number" => 1)
1047
+ @cli.favorites("sferik")
1048
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "1", :screen_name => "sferik"})).to have_been_made
1049
+ end
1050
+ it "limits the number of results to 201" do
1051
+ @cli.options = @cli.options.merge("number" => 201)
1052
+ @cli.favorites("sferik")
1053
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "200", :screen_name => "sferik"})).to have_been_made
1054
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "1", :screen_name => "sferik", :max_id => "265500541700956160"})).to have_been_made
1055
+ end
1056
+ end
1057
+ context "--since-id" do
1058
+ before do
1059
+ @cli.options = @cli.options.merge("since_id" => 244104558433951744)
1060
+ stub_get("/1.1/favorites/list.json").with(:query => {:count => "20", :screen_name => "sferik", :since_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
1061
+ end
1062
+ it "requests the correct resource" do
1063
+ @cli.favorites("sferik")
1064
+ expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "20", :screen_name => "sferik", :since_id => "244104558433951744"})).to have_been_made
1065
+ end
1066
+ end
1009
1067
  end
1010
1068
  end
1011
1069
 
@@ -1052,7 +1110,7 @@ ID Posted at Screen name Text
1052
1110
  stub_post("/1.1/friendships/create.json").with(:body => {:user_id => "14100886"}).to_return(:status => 502)
1053
1111
  expect do
1054
1112
  @cli.follow("sferik", "pengwynn")
1055
- end.to raise_error("Twitter is down or being upgraded.")
1113
+ end.to raise_error(Twitter::Error::BadGateway)
1056
1114
  expect(a_get("/1.1/friends/ids.json").with(:query => {:cursor => "-1", :screen_name => "sferik"})).to have_been_made.times(3)
1057
1115
  expect(a_post("/1.1/users/lookup.json").with(:body => {:screen_name => "sferik,pengwynn"})).to have_been_made.times(3)
1058
1116
  expect(a_post("/1.1/friendships/create.json").with(:body => {:user_id => "14100886"})).to have_been_made.times(3)
@@ -1976,7 +2034,7 @@ ID Posted at Screen name Text
1976
2034
 
1977
2035
  describe "#open" do
1978
2036
  before do
1979
- @cli.options = @cli.options.merge("display-url" => true)
2037
+ @cli.options = @cli.options.merge("display-uri" => true)
1980
2038
  end
1981
2039
  it "has the correct output" do
1982
2040
  expect do
@@ -2012,18 +2070,18 @@ ID Posted at Screen name Text
2012
2070
 
2013
2071
  describe "#reply" do
2014
2072
  before do
2015
- @cli.options = @cli.options.merge("profile" => fixture_path + "/.trc", "location" => true)
2073
+ @cli.options = @cli.options.merge("profile" => fixture_path + "/.trc", "location" => nil)
2016
2074
  stub_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"}).to_return(:body => fixture("status_with_mention.json"))
2017
- stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2075
+ stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2018
2076
  stub_request(:get, "http://checkip.dyndns.org/").to_return(:body => fixture("checkip.html"), :headers => {:content_type => "text/html"})
2019
2077
  stub_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169").to_return(:body => fixture("geoplugin.xml"), :headers => {:content_type => "application/xml"})
2020
2078
  end
2021
2079
  it "requests the correct resource" do
2022
2080
  @cli.reply("263813522369159169", "Testing")
2023
2081
  expect(a_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
2024
- expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"})).to have_been_made
2025
- expect(a_request(:get, "http://checkip.dyndns.org/")).to have_been_made
2026
- expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).to have_been_made
2082
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :trim_user => "true"})).to have_been_made
2083
+ expect(a_request(:get, "http://checkip.dyndns.org/")).not_to have_been_made
2084
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).not_to have_been_made
2027
2085
  end
2028
2086
  it "has the correct output" do
2029
2087
  @cli.reply("263813522369159169", "Testing")
@@ -2032,21 +2090,56 @@ ID Posted at Screen name Text
2032
2090
  context "--all" do
2033
2091
  before do
2034
2092
  @cli.options = @cli.options.merge("all" => true)
2035
- stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench @sferik Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2093
+ stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench @sferik Testing", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2094
+ end
2095
+ it "requests the correct resource" do
2096
+ @cli.reply("263813522369159169", "Testing")
2097
+ expect(a_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
2098
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench @sferik Testing", :trim_user => "true"})).to have_been_made
2099
+ expect(a_request(:get, "http://checkip.dyndns.org/")).not_to have_been_made
2100
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).not_to have_been_made
2101
+ end
2102
+ it "has the correct output" do
2103
+ @cli.reply("263813522369159169", "Testing")
2104
+ expect($stdout.string.split("\n").first).to eq "Reply posted by @testcli to @joshfrench @sferik."
2105
+ end
2106
+ end
2107
+ context "--location" do
2108
+ before do
2109
+ @cli.options = @cli.options.merge("location" => "location")
2110
+ stub_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"}).to_return(:body => fixture("status_with_mention.json"))
2111
+ stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2036
2112
  end
2037
2113
  it "requests the correct resource" do
2038
2114
  @cli.reply("263813522369159169", "Testing")
2039
2115
  expect(a_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
2040
- expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench @sferik Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"})).to have_been_made
2116
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"})).to have_been_made
2041
2117
  expect(a_request(:get, "http://checkip.dyndns.org/")).to have_been_made
2042
2118
  expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).to have_been_made
2043
2119
  end
2044
2120
  it "has the correct output" do
2045
2121
  @cli.reply("263813522369159169", "Testing")
2046
- expect($stdout.string.split("\n").first).to eq "Reply posted by @testcli to @joshfrench @sferik."
2122
+ expect($stdout.string.split("\n").first).to eq "Reply posted by @testcli to @joshfrench."
2047
2123
  end
2048
2124
  end
2049
- end
2125
+ context "--location 'latitude,longitude'" do
2126
+ before do
2127
+ @cli.options = @cli.options.merge("location" => "41.03132,28.9869")
2128
+ stub_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"}).to_return(:body => fixture("status_with_mention.json"))
2129
+ stub_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "41.03132", :long => "28.9869", :trim_user => "true"}).to_return(:body => fixture("status.json"))
2130
+ end
2131
+ it "requests the correct resource" do
2132
+ @cli.reply("263813522369159169", "Testing")
2133
+ expect(a_get("/1.1/statuses/show/263813522369159169.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
2134
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:in_reply_to_status_id => "263813522369159169", :status => "@joshfrench Testing", :lat => "41.03132", :long => "28.9869", :trim_user => "true"})).to have_been_made
2135
+ expect(a_request(:get, "http://checkip.dyndns.org/")).not_to have_been_made
2136
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).not_to have_been_made
2137
+ end
2138
+ it "has the correct output" do
2139
+ @cli.reply("263813522369159169", "Testing")
2140
+ expect($stdout.string.split("\n").first).to eq "Reply posted by @testcli to @joshfrench."
2141
+ end
2142
+ end end
2050
2143
 
2051
2144
  describe "#report_spam" do
2052
2145
  before do
@@ -2341,12 +2434,10 @@ ID Posted at Screen name Text
2341
2434
  describe "#status" do
2342
2435
  before do
2343
2436
  stub_get("/1.1/statuses/show/55709764298092545.json").with(:query => {:include_my_retweet => "false"}).to_return(:body => fixture("status.json"))
2344
- stub_get("/i/statuses/55709764298092545/activity/summary.json").to_return(:body => fixture("activity_summary.json"))
2345
2437
  end
2346
2438
  it "requests the correct resources" do
2347
2439
  @cli.status("55709764298092545")
2348
2440
  expect(a_get("/1.1/statuses/show/55709764298092545.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
2349
- expect(a_get("/i/statuses/55709764298092545/activity/summary.json")).to have_been_made
2350
2441
  end
2351
2442
  it "has the correct output" do
2352
2443
  @cli.status("55709764298092545")
@@ -2356,8 +2447,7 @@ Text The problem with your code is that it's doing exactly what you told
2356
2447
  Screen name @sferik
2357
2448
  Posted at Apr 6 2011 (8 months ago)
2358
2449
  Retweets 320
2359
- Favorites 2
2360
- Replies 1
2450
+ Favorites 50
2361
2451
  Source Twitter for iPhone
2362
2452
  Location Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, California, United States
2363
2453
  eos
@@ -2369,8 +2459,8 @@ Location Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, Californi
2369
2459
  it "has the correct output" do
2370
2460
  @cli.status("55709764298092545")
2371
2461
  expect($stdout.string).to eq <<-eos
2372
- ID,Posted at,Screen name,Text,Retweets,Favorites,Replies,Source,Location
2373
- 55709764298092545,2011-04-06 19:13:37 +0000,sferik,The problem with your code is that it's doing exactly what you told it to do.,320,2,1,Twitter for iPhone,"Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, California, United States"
2462
+ ID,Posted at,Screen name,Text,Retweets,Favorites,Source,Location
2463
+ 55709764298092545,2011-04-06 19:13:37 +0000,sferik,The problem with your code is that it's doing exactly what you told it to do.,320,50,Twitter for iPhone,"Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, California, United States"
2374
2464
  eos
2375
2465
  end
2376
2466
  end
@@ -2386,8 +2476,7 @@ Text The problem with your code is that it's doing exactly what you told
2386
2476
  Screen name @sferik
2387
2477
  Posted at Apr 6 2011 (8 months ago)
2388
2478
  Retweets 320
2389
- Favorites 2
2390
- Replies 1
2479
+ Favorites 50
2391
2480
  Source Twitter for iPhone
2392
2481
  Location Blowfish Sushi To Die For, San Francisco, California, United States
2393
2482
  eos
@@ -2405,8 +2494,7 @@ Text The problem with your code is that it's doing exactly what you told
2405
2494
  Screen name @sferik
2406
2495
  Posted at Apr 6 2011 (8 months ago)
2407
2496
  Retweets 320
2408
- Favorites 2
2409
- Replies 1
2497
+ Favorites 50
2410
2498
  Source Twitter for iPhone
2411
2499
  Location Blowfish Sushi To Die For, San Francisco, California, United States
2412
2500
  eos
@@ -2424,8 +2512,7 @@ Text The problem with your code is that it's doing exactly what you told
2424
2512
  Screen name @sferik
2425
2513
  Posted at Apr 6 2011 (8 months ago)
2426
2514
  Retweets 320
2427
- Favorites 2
2428
- Replies 1
2515
+ Favorites 50
2429
2516
  Source Twitter for iPhone
2430
2517
  Location Blowfish Sushi To Die For, San Francisco, United States
2431
2518
  eos
@@ -2443,8 +2530,7 @@ Text The problem with your code is that it's doing exactly what you told
2443
2530
  Screen name @sferik
2444
2531
  Posted at Apr 6 2011 (8 months ago)
2445
2532
  Retweets 320
2446
- Favorites 2
2447
- Replies 1
2533
+ Favorites 50
2448
2534
  Source Twitter for iPhone
2449
2535
  Location Blowfish Sushi To Die For, San Francisco
2450
2536
  eos
@@ -2462,8 +2548,7 @@ Text The problem with your code is that it's doing exactly what you told
2462
2548
  Screen name @sferik
2463
2549
  Posted at Apr 6 2011 (8 months ago)
2464
2550
  Retweets 320
2465
- Favorites 2
2466
- Replies 1
2551
+ Favorites 50
2467
2552
  Source Twitter for iPhone
2468
2553
  Location Blowfish Sushi To Die For
2469
2554
  eos
@@ -2482,8 +2567,7 @@ Text The problem with your code is that it's doing exactly what you told
2482
2567
  Screen name @sferik
2483
2568
  Posted at Apr 6 2011 (8 months ago)
2484
2569
  Retweets 320
2485
- Favorites 2
2486
- Replies 1
2570
+ Favorites 50
2487
2571
  Source Twitter for iPhone
2488
2572
  Location San Francisco, CA, USA
2489
2573
  eos
@@ -2501,8 +2585,7 @@ Text The problem with your code is that it's doing exactly what you told
2501
2585
  Screen name @sferik
2502
2586
  Posted at Apr 6 2011 (8 months ago)
2503
2587
  Retweets 320
2504
- Favorites 2
2505
- Replies 1
2588
+ Favorites 50
2506
2589
  Source Twitter for iPhone
2507
2590
  Location CA, USA
2508
2591
  eos
@@ -2521,8 +2604,7 @@ Text The problem with your code is that it's doing exactly what you told
2521
2604
  Screen name @sferik
2522
2605
  Posted at Apr 6 2011 (8 months ago)
2523
2606
  Retweets 320
2524
- Favorites 2
2525
- Replies 1
2607
+ Favorites 50
2526
2608
  Source Twitter for iPhone
2527
2609
  Location USA
2528
2610
  eos
@@ -2714,34 +2796,6 @@ ID Posted at Screen name Text
2714
2796
  244099460672679938 Sep 7 07:47 @dwiskus Gentlemen, you can't fig...
2715
2797
  eos
2716
2798
  end
2717
- context "--max-id" do
2718
- before do
2719
- @cli.options = @cli.options.merge("max_id" => 244104558433951744)
2720
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
2721
- end
2722
- it "requests the correct resource" do
2723
- @cli.timeline
2724
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"})).to have_been_made
2725
- end
2726
- end
2727
- context "--number" do
2728
- before do
2729
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"}).to_return(:body => fixture("statuses.json"))
2730
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"}).to_return(:body => fixture("200_statuses.json"))
2731
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"}).to_return(:body => fixture("statuses.json"))
2732
- end
2733
- it "limits the number of results to 1" do
2734
- @cli.options = @cli.options.merge("number" => 1)
2735
- @cli.timeline
2736
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"})).to have_been_made
2737
- end
2738
- it "limits the number of results to 201" do
2739
- @cli.options = @cli.options.merge("number" => 201)
2740
- @cli.timeline
2741
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"})).to have_been_made
2742
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"})).to have_been_made
2743
- end
2744
- end
2745
2799
  context "--reverse" do
2746
2800
  before do
2747
2801
  @cli.options = @cli.options.merge("reverse" => true)
@@ -2774,6 +2828,34 @@ ID Posted at Screen name Text
2774
2828
  end
2775
2829
  end
2776
2830
  end
2831
+ context "--max-id" do
2832
+ before do
2833
+ @cli.options = @cli.options.merge("max_id" => 244104558433951744)
2834
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
2835
+ end
2836
+ it "requests the correct resource" do
2837
+ @cli.timeline
2838
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"})).to have_been_made
2839
+ end
2840
+ end
2841
+ context "--number" do
2842
+ before do
2843
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"}).to_return(:body => fixture("statuses.json"))
2844
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"}).to_return(:body => fixture("200_statuses.json"))
2845
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"}).to_return(:body => fixture("statuses.json"))
2846
+ end
2847
+ it "limits the number of results to 1" do
2848
+ @cli.options = @cli.options.merge("number" => 1)
2849
+ @cli.timeline
2850
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"})).to have_been_made
2851
+ end
2852
+ it "limits the number of results to 201" do
2853
+ @cli.options = @cli.options.merge("number" => 201)
2854
+ @cli.timeline
2855
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"})).to have_been_made
2856
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"})).to have_been_made
2857
+ end
2858
+ end
2777
2859
  context "--since-id" do
2778
2860
  before do
2779
2861
  @cli.options = @cli.options.merge("since_id" => 244104558433951744)
@@ -3014,7 +3096,7 @@ WOEID Parent ID Type Name Country
3014
3096
  stub_post("/1.1/friendships/destroy.json").with(:body => {:screen_name => "sferik"}).to_return(:status => 502)
3015
3097
  expect do
3016
3098
  @cli.unfollow("sferik")
3017
- end.to raise_error("Twitter is down or being upgraded.")
3099
+ end.to raise_error(Twitter::Error::BadGateway)
3018
3100
  expect(a_post("/1.1/friendships/destroy.json").with(:body => {:screen_name => "sferik"})).to have_been_made.times(3)
3019
3101
  end
3020
3102
  end
@@ -3023,16 +3105,16 @@ WOEID Parent ID Type Name Country
3023
3105
 
3024
3106
  describe "#update" do
3025
3107
  before do
3026
- @cli.options = @cli.options.merge("profile" => fixture_path + "/.trc", "location" => true)
3027
- stub_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"}).to_return(:body => fixture("status.json"))
3108
+ @cli.options = @cli.options.merge("profile" => fixture_path + "/.trc")
3109
+ stub_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :trim_user => "true"}).to_return(:body => fixture("status.json"))
3028
3110
  stub_request(:get, "http://checkip.dyndns.org/").to_return(:body => fixture("checkip.html"), :headers => {:content_type => "text/html"})
3029
3111
  stub_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169").to_return(:body => fixture("geoplugin.xml"), :headers => {:content_type => "application/xml"})
3030
3112
  end
3031
3113
  it "requests the correct resource" do
3032
3114
  @cli.update("Testing")
3033
- expect(a_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"})).to have_been_made
3034
- expect(a_request(:get, "http://checkip.dyndns.org/")).to have_been_made
3035
- expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).to have_been_made
3115
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :trim_user => "true"})).to have_been_made
3116
+ expect(a_request(:get, "http://checkip.dyndns.org/")).not_to have_been_made
3117
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).not_to have_been_made
3036
3118
  end
3037
3119
  it "has the correct output" do
3038
3120
  @cli.update("Testing")
@@ -3052,6 +3134,38 @@ WOEID Parent ID Type Name Country
3052
3134
  expect($stdout.string.split("\n").first).to eq "Tweet posted by @testcli."
3053
3135
  end
3054
3136
  end
3137
+ context "--location" do
3138
+ before do
3139
+ @cli.options = @cli.options.merge("location" => "location")
3140
+ stub_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"}).to_return(:body => fixture("status.json"))
3141
+ end
3142
+ it "requests the correct resource" do
3143
+ @cli.update("Testing")
3144
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "37.76969909668", :long => "-122.39330291748", :trim_user => "true"})).to have_been_made
3145
+ expect(a_request(:get, "http://checkip.dyndns.org/")).to have_been_made
3146
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).to have_been_made
3147
+ end
3148
+ it "has the correct output" do
3149
+ @cli.update("Testing")
3150
+ expect($stdout.string.split("\n").first).to eq "Tweet posted by @testcli."
3151
+ end
3152
+ end
3153
+ context "--location 'latitude,longitude'" do
3154
+ before do
3155
+ @cli.options = @cli.options.merge("location" => "41.03132,28.9869")
3156
+ stub_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "41.03132", :long => "28.9869", :trim_user => "true"}).to_return(:body => fixture("status.json"))
3157
+ end
3158
+ it "requests the correct resource" do
3159
+ @cli.update("Testing")
3160
+ expect(a_post("/1.1/statuses/update.json").with(:body => {:status => "Testing", :lat => "41.03132", :long => "28.9869", :trim_user => "true"})).to have_been_made
3161
+ expect(a_request(:get, "http://checkip.dyndns.org/")).not_to have_been_made
3162
+ expect(a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169")).not_to have_been_made
3163
+ end
3164
+ it "has the correct output" do
3165
+ @cli.update("Testing")
3166
+ expect($stdout.string.split("\n").first).to eq "Tweet posted by @testcli."
3167
+ end
3168
+ end
3055
3169
  end
3056
3170
 
3057
3171
  describe "#users" do