tweetwine 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +5 -0
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/Rakefile +5 -0
- data/benchmark/home_bm.rb +36 -0
- data/lib/tweetwine/character_encoding.rb +1 -1
- data/lib/tweetwine/http.rb +1 -1
- data/lib/tweetwine/support.rb +28 -26
- data/lib/tweetwine/twitter.rb +8 -5
- data/lib/tweetwine/version.rb +1 -1
- data/lib/tweetwine.rb +0 -2
- data/man/tweetwine.7 +3 -3
- data/man/tweetwine.7.ronn +2 -2
- data/project.rb +2 -0
- data/test/fixture/config_integration.yaml +1 -1
- data/test/integration/authorization_test.rb +1 -1
- data/test/integration/global_options_test.rb +1 -1
- data/test/integration/invalid_config_file_test.rb +1 -1
- data/test/integration/search_statuses_test.rb +1 -1
- data/test/integration/show_followers_test.rb +1 -1
- data/test/integration/show_friends_test.rb +1 -1
- data/test/integration/show_home_test.rb +1 -1
- data/test/integration/show_mentions_test.rb +1 -1
- data/test/integration/show_user_test.rb +1 -1
- data/test/integration/update_status_test.rb +42 -21
- data/test/integration/use_http_proxy_test.rb +6 -6
- data/test/integration/user_help_test.rb +2 -2
- data/test/support/assertions.rb +58 -0
- data/test/support/common.rb +10 -0
- data/test/support/common_helpers.rb +43 -0
- data/test/support/doubles.rb +35 -0
- data/test/{integration/helper.rb → support/integration_test_case.rb} +12 -7
- data/test/support/mocha_integration.rb +16 -0
- data/test/support/tweets.rb +95 -0
- data/test/support/unit_test_case.rb +28 -0
- data/test/support/webmock_integration.rb +16 -0
- data/test/unit/character_encoding_test.rb +1 -1
- data/test/unit/cli_test.rb +4 -4
- data/test/unit/config_test.rb +1 -1
- data/test/unit/http_test.rb +1 -1
- data/test/unit/oauth_test.rb +1 -1
- data/test/unit/obfuscate_test.rb +1 -1
- data/test/unit/option_parser_test.rb +1 -1
- data/test/unit/promise_test.rb +1 -1
- data/test/unit/support_test.rb +1 -1
- data/test/unit/tweet_test.rb +3 -3
- data/test/unit/twitter_test.rb +29 -27
- data/test/unit/ui_test.rb +3 -3
- data/test/unit/uri_test.rb +1 -1
- data/test/unit/url_shortener_test.rb +1 -1
- data/tweetwine.gemspec +5 -4
- metadata +122 -97
- data/test/helper.rb +0 -60
- data/test/unit/helper.rb +0 -108
- data/test/unit/tweet_helper.rb +0 -95
metadata
CHANGED
@@ -1,129 +1,140 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tweetwine
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.3
|
4
5
|
prerelease:
|
5
|
-
version: 0.4.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Tuomas Kareinen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: oauth
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2152362380 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
18
|
+
requirements:
|
21
19
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 0.4.4
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: gem-man
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *2152362380
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: gem-man
|
27
|
+
requirement: &2152361800 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
29
|
+
requirements:
|
32
30
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 0.
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.3.0
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: minitest
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *2152361800
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: minitest
|
38
|
+
requirement: &2152361280 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
40
|
+
requirements:
|
43
41
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 2.
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.4.0
|
46
44
|
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: mocha
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *2152361280
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mocha
|
49
|
+
requirement: &2152360780 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
51
|
+
requirements:
|
54
52
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
56
54
|
version: 0.9.12
|
57
55
|
type: :development
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: open4
|
61
56
|
prerelease: false
|
62
|
-
|
57
|
+
version_requirements: *2152360780
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: open4
|
60
|
+
requirement: &2152360220 !ruby/object:Gem::Requirement
|
63
61
|
none: false
|
64
|
-
requirements:
|
62
|
+
requirements:
|
65
63
|
- - ~>
|
66
|
-
- !ruby/object:Gem::Version
|
64
|
+
- !ruby/object:Gem::Version
|
67
65
|
version: 1.0.1
|
68
66
|
type: :development
|
69
|
-
version_requirements: *id005
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: rake
|
72
67
|
prerelease: false
|
73
|
-
|
68
|
+
version_requirements: *2152360220
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: perftools.rb
|
71
|
+
requirement: &2152350500 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
|
-
requirements:
|
73
|
+
requirements:
|
76
74
|
- - ~>
|
77
|
-
- !ruby/object:Gem::Version
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.5.6
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2152350500
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &2152349660 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
78
87
|
version: 0.8.7
|
79
88
|
type: :development
|
80
|
-
version_requirements: *id006
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: ronn
|
83
89
|
prerelease: false
|
84
|
-
|
90
|
+
version_requirements: *2152349660
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: ronn
|
93
|
+
requirement: &2152348480 !ruby/object:Gem::Requirement
|
85
94
|
none: false
|
86
|
-
requirements:
|
95
|
+
requirements:
|
87
96
|
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
97
|
+
- !ruby/object:Gem::Version
|
89
98
|
version: 0.7.3
|
90
99
|
type: :development
|
91
|
-
version_requirements: *id007
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: timecop
|
94
100
|
prerelease: false
|
95
|
-
|
101
|
+
version_requirements: *2152348480
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: timecop
|
104
|
+
requirement: &2152347240 !ruby/object:Gem::Requirement
|
96
105
|
none: false
|
97
|
-
requirements:
|
106
|
+
requirements:
|
98
107
|
- - ~>
|
99
|
-
- !ruby/object:Gem::Version
|
108
|
+
- !ruby/object:Gem::Version
|
100
109
|
version: 0.3.5
|
101
110
|
type: :development
|
102
|
-
version_requirements: *id008
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: webmock
|
105
111
|
prerelease: false
|
106
|
-
|
112
|
+
version_requirements: *2152347240
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: webmock
|
115
|
+
requirement: &2152346240 !ruby/object:Gem::Requirement
|
107
116
|
none: false
|
108
|
-
requirements:
|
117
|
+
requirements:
|
109
118
|
- - ~>
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: 1.
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 1.7.7
|
112
121
|
type: :development
|
113
|
-
|
114
|
-
|
115
|
-
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *2152346240
|
124
|
+
description: ! 'A simple but tasty Twitter agent for command line use, designed for
|
125
|
+
quickly
|
126
|
+
|
116
127
|
showing the latest tweets.
|
117
128
|
|
129
|
+
'
|
118
130
|
email: tkareine@gmail.com
|
119
|
-
executables:
|
131
|
+
executables:
|
120
132
|
- tweetwine
|
121
133
|
extensions: []
|
122
|
-
|
123
|
-
extra_rdoc_files:
|
134
|
+
extra_rdoc_files:
|
124
135
|
- CHANGELOG.rdoc
|
125
136
|
- LICENSE.txt
|
126
|
-
files:
|
137
|
+
files:
|
127
138
|
- .gitignore
|
128
139
|
- CHANGELOG.rdoc
|
129
140
|
- Gemfile
|
@@ -131,6 +142,7 @@ files:
|
|
131
142
|
- README.md
|
132
143
|
- RELEASING.txt
|
133
144
|
- Rakefile
|
145
|
+
- benchmark/home_bm.rb
|
134
146
|
- bin/tweetwine
|
135
147
|
- contrib/tweetwine-completion.bash
|
136
148
|
- lib/tweetwine.rb
|
@@ -166,10 +178,8 @@ files:
|
|
166
178
|
- test/fixture/update_without_urls.json
|
167
179
|
- test/fixture/user.json
|
168
180
|
- test/fixture/users.json
|
169
|
-
- test/helper.rb
|
170
181
|
- test/integration/authorization_test.rb
|
171
182
|
- test/integration/global_options_test.rb
|
172
|
-
- test/integration/helper.rb
|
173
183
|
- test/integration/invalid_config_file_test.rb
|
174
184
|
- test/integration/search_statuses_test.rb
|
175
185
|
- test/integration/show_followers_test.rb
|
@@ -180,17 +190,24 @@ files:
|
|
180
190
|
- test/integration/update_status_test.rb
|
181
191
|
- test/integration/use_http_proxy_test.rb
|
182
192
|
- test/integration/user_help_test.rb
|
193
|
+
- test/support/assertions.rb
|
194
|
+
- test/support/common.rb
|
195
|
+
- test/support/common_helpers.rb
|
196
|
+
- test/support/doubles.rb
|
197
|
+
- test/support/integration_test_case.rb
|
198
|
+
- test/support/mocha_integration.rb
|
199
|
+
- test/support/tweets.rb
|
200
|
+
- test/support/unit_test_case.rb
|
201
|
+
- test/support/webmock_integration.rb
|
183
202
|
- test/unit/character_encoding_test.rb
|
184
203
|
- test/unit/cli_test.rb
|
185
204
|
- test/unit/config_test.rb
|
186
|
-
- test/unit/helper.rb
|
187
205
|
- test/unit/http_test.rb
|
188
206
|
- test/unit/oauth_test.rb
|
189
207
|
- test/unit/obfuscate_test.rb
|
190
208
|
- test/unit/option_parser_test.rb
|
191
209
|
- test/unit/promise_test.rb
|
192
210
|
- test/unit/support_test.rb
|
193
|
-
- test/unit/tweet_helper.rb
|
194
211
|
- test/unit/tweet_test.rb
|
195
212
|
- test/unit/twitter_test.rb
|
196
213
|
- test/unit/ui_test.rb
|
@@ -200,37 +217,40 @@ files:
|
|
200
217
|
- man/tweetwine.7
|
201
218
|
homepage: https://github.com/tkareine/tweetwine
|
202
219
|
licenses: []
|
220
|
+
post_install_message: ! '
|
221
|
+
|
222
|
+
Tweetwine requires a JSON parser library. Ruby 1.9 comes bundled with one by
|
203
223
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
224
|
+
default. For Ruby 1.8, you can install ''json'' gem, for example.
|
225
|
+
|
226
|
+
|
227
|
+
'
|
228
|
+
rdoc_options:
|
208
229
|
- --title
|
209
|
-
- tweetwine 0.4.
|
230
|
+
- tweetwine 0.4.3
|
210
231
|
- --exclude
|
211
232
|
- test
|
212
|
-
require_paths:
|
233
|
+
require_paths:
|
213
234
|
- lib
|
214
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
235
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
215
236
|
none: false
|
216
|
-
requirements:
|
217
|
-
- -
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version:
|
220
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
|
+
requirements:
|
238
|
+
- - ! '>='
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: '0'
|
241
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
242
|
none: false
|
222
|
-
requirements:
|
223
|
-
- -
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
version:
|
243
|
+
requirements:
|
244
|
+
- - ! '>='
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
226
247
|
requirements: []
|
227
|
-
|
228
248
|
rubyforge_project:
|
229
|
-
rubygems_version: 1.8.
|
249
|
+
rubygems_version: 1.8.10
|
230
250
|
signing_key:
|
231
251
|
specification_version: 3
|
232
252
|
summary: Tweetwine shows the latest tweets from the command line quickly.
|
233
|
-
test_files:
|
253
|
+
test_files:
|
234
254
|
- test/fixture/config_integration.yaml
|
235
255
|
- test/fixture/config_unit.yaml
|
236
256
|
- test/fixture/home.json
|
@@ -244,10 +264,8 @@ test_files:
|
|
244
264
|
- test/fixture/update_without_urls.json
|
245
265
|
- test/fixture/user.json
|
246
266
|
- test/fixture/users.json
|
247
|
-
- test/helper.rb
|
248
267
|
- test/integration/authorization_test.rb
|
249
268
|
- test/integration/global_options_test.rb
|
250
|
-
- test/integration/helper.rb
|
251
269
|
- test/integration/invalid_config_file_test.rb
|
252
270
|
- test/integration/search_statuses_test.rb
|
253
271
|
- test/integration/show_followers_test.rb
|
@@ -258,17 +276,24 @@ test_files:
|
|
258
276
|
- test/integration/update_status_test.rb
|
259
277
|
- test/integration/use_http_proxy_test.rb
|
260
278
|
- test/integration/user_help_test.rb
|
279
|
+
- test/support/assertions.rb
|
280
|
+
- test/support/common.rb
|
281
|
+
- test/support/common_helpers.rb
|
282
|
+
- test/support/doubles.rb
|
283
|
+
- test/support/integration_test_case.rb
|
284
|
+
- test/support/mocha_integration.rb
|
285
|
+
- test/support/tweets.rb
|
286
|
+
- test/support/unit_test_case.rb
|
287
|
+
- test/support/webmock_integration.rb
|
261
288
|
- test/unit/character_encoding_test.rb
|
262
289
|
- test/unit/cli_test.rb
|
263
290
|
- test/unit/config_test.rb
|
264
|
-
- test/unit/helper.rb
|
265
291
|
- test/unit/http_test.rb
|
266
292
|
- test/unit/oauth_test.rb
|
267
293
|
- test/unit/obfuscate_test.rb
|
268
294
|
- test/unit/option_parser_test.rb
|
269
295
|
- test/unit/promise_test.rb
|
270
296
|
- test/unit/support_test.rb
|
271
|
-
- test/unit/tweet_helper.rb
|
272
297
|
- test/unit/tweet_test.rb
|
273
298
|
- test/unit/twitter_test.rb
|
274
299
|
- test/unit/ui_test.rb
|
data/test/helper.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
%w{
|
4
|
-
minitest/spec
|
5
|
-
tweetwine
|
6
|
-
webmock
|
7
|
-
}.each { |lib| require lib }
|
8
|
-
|
9
|
-
MiniTest::Unit.autorun
|
10
|
-
WebMock.disable_net_connect!
|
11
|
-
|
12
|
-
module Tweetwine
|
13
|
-
module Test
|
14
|
-
module CommonHelper
|
15
|
-
def file_mode(file)
|
16
|
-
File.stat(file).mode & 0777
|
17
|
-
end
|
18
|
-
|
19
|
-
def fixture_path(filename)
|
20
|
-
File.join(File.dirname(__FILE__), 'fixture', filename)
|
21
|
-
end
|
22
|
-
|
23
|
-
def fixture_file(filename)
|
24
|
-
File.open(fixture_path(filename)) do |f|
|
25
|
-
f.readlines.join("\n")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def tmp_env(vars = {})
|
30
|
-
originals = {}
|
31
|
-
vars.each_pair do |key, value|
|
32
|
-
key = key.to_s
|
33
|
-
originals[key] = ENV[key]
|
34
|
-
ENV[key] = value
|
35
|
-
end
|
36
|
-
yield
|
37
|
-
ensure
|
38
|
-
originals.each_pair do |key, value|
|
39
|
-
ENV[key] = value
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def tmp_kcode(val)
|
44
|
-
original = $KCODE
|
45
|
-
$KCODE = val
|
46
|
-
yield
|
47
|
-
ensure
|
48
|
-
$KCODE = original
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
module WebMockIntegration
|
53
|
-
include WebMock::API
|
54
|
-
|
55
|
-
def teardown
|
56
|
-
WebMock.reset!
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
data/test/unit/helper.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
require 'mocha'
|
5
|
-
|
6
|
-
Mocha::Configuration.prevent(:stubbing_non_existent_method)
|
7
|
-
|
8
|
-
module Tweetwine::Test
|
9
|
-
module Unit
|
10
|
-
module Assertions
|
11
|
-
# Asserts whether an Enumeration-like object contains all the elements.
|
12
|
-
# Fails unless +actual+ contains the same elements as +expected+,
|
13
|
-
# ignoring the order of the elements.
|
14
|
-
def assert_contains_exactly(expected, actual, msg_diff_size = nil, msg_diff_elems = nil)
|
15
|
-
assert_equal(expected.size, actual.size, message(msg_diff_size) {
|
16
|
-
'Expected %s to be of same size as %s' % [actual.inspect, expected.inspect]
|
17
|
-
})
|
18
|
-
assert(enumerable_minus_each_element(actual, expected).empty?, message(msg_diff_elems) {
|
19
|
-
'Expected %s to contain all the elements of %s' % [actual.inspect, expected.inspect]
|
20
|
-
})
|
21
|
-
end
|
22
|
-
|
23
|
-
# Fails unless +str+ is a full match to +regex+.
|
24
|
-
def assert_full_match(regex, str, msg = nil)
|
25
|
-
match_data = regex.match(str)
|
26
|
-
assert(str == match_data.to_s, message(msg) {
|
27
|
-
'Expected %s to be a full match to %s' % [str, regex.inspect]
|
28
|
-
})
|
29
|
-
end
|
30
|
-
|
31
|
-
# Fails if +str+ is a full match to +regex+.
|
32
|
-
def assert_no_full_match(regex, str, msg = nil)
|
33
|
-
match_data = regex.match(str)
|
34
|
-
assert(str != match_data.to_s, message(msg) {
|
35
|
-
'Expected %s not to be a full match to %s' % [str, regex.inspect]
|
36
|
-
})
|
37
|
-
end
|
38
|
-
|
39
|
-
# Fails unless +fun.call(*args)+ is equal to +expected+ and
|
40
|
-
# +fun.call(*args)+ is equal to +fun.call(*args.reverse)+.
|
41
|
-
def assert_commutative(expected, args, msg_not_expected = nil, msg_not_commutative = nil, &fun)
|
42
|
-
left_args = args
|
43
|
-
left_actual = fun.call(left_args)
|
44
|
-
assert_equal(expected, left_actual, message(msg_not_expected) {
|
45
|
-
'Expected %s, not %s' % [expected.inspect, left_actual.inspect]
|
46
|
-
})
|
47
|
-
right_args = args.reverse
|
48
|
-
right_actual = fun.call(*right_args)
|
49
|
-
assert_equal(left_actual, right_actual, message(msg_not_commutative) {
|
50
|
-
'Expected fun%s => %s to be commutative with fun%s => %s' %
|
51
|
-
[left_args.inspect, left_actual.inspect, right_args.inspect, right_actual.inspect]
|
52
|
-
})
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def enumerable_minus_each_element(enumerable, elements)
|
58
|
-
remaining = enumerable.dup.to_a
|
59
|
-
elements.each do |e|
|
60
|
-
index = remaining.index(e)
|
61
|
-
remaining.delete_at(index) if index
|
62
|
-
end
|
63
|
-
remaining
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
module Doubles
|
68
|
-
def mock_config
|
69
|
-
@config = mock('Config')
|
70
|
-
Tweetwine::CLI.stubs(:config).returns(@config)
|
71
|
-
end
|
72
|
-
|
73
|
-
def mock_http
|
74
|
-
@http = mock('Http')
|
75
|
-
Tweetwine::CLI.stubs(:http).returns(@http)
|
76
|
-
end
|
77
|
-
|
78
|
-
def mock_oauth
|
79
|
-
@oauth = mock('OAuth')
|
80
|
-
Tweetwine::CLI.stubs(:oauth).returns(@oauth)
|
81
|
-
end
|
82
|
-
|
83
|
-
def mock_ui
|
84
|
-
@ui = mock('UI')
|
85
|
-
Tweetwine::CLI.stubs(:ui).returns(@ui)
|
86
|
-
end
|
87
|
-
|
88
|
-
def mock_url_shortener
|
89
|
-
@url_shortener = mock('UrlShortener')
|
90
|
-
Tweetwine::CLI.stubs(:url_shortener).returns(@url_shortener)
|
91
|
-
end
|
92
|
-
|
93
|
-
def stub_config(options = {})
|
94
|
-
@config = options
|
95
|
-
Tweetwine::CLI.stubs(:config).returns(@config)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
class TestCase < MiniTest::Spec
|
100
|
-
include WebMockIntegration
|
101
|
-
include Tweetwine
|
102
|
-
include Assertions
|
103
|
-
include Doubles
|
104
|
-
include Tweetwine::Test::CommonHelper
|
105
|
-
extend Tweetwine::Test::CommonHelper
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
data/test/unit/tweet_helper.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'timecop'
|
4
|
-
|
5
|
-
module Tweetwine::Test::Unit
|
6
|
-
module TweetHelper
|
7
|
-
FIELD_PATHS = {
|
8
|
-
:from_user => %w{screen_name},
|
9
|
-
:to_user => %w{status in_reply_to_screen_name},
|
10
|
-
:retweet => %w{retweeted_status},
|
11
|
-
:created_at => %w{status created_at},
|
12
|
-
:status => %w{status text}
|
13
|
-
}.freeze
|
14
|
-
|
15
|
-
DEFAULT_TIMESTAMP = Time.utc(2011, 'feb', 17, 22, 28, 0)
|
16
|
-
|
17
|
-
DEFAULT_FIELD_VALUES = {
|
18
|
-
:from_user => 'fred',
|
19
|
-
:to_user => nil,
|
20
|
-
:retweet => nil,
|
21
|
-
:created_at => DEFAULT_TIMESTAMP.iso8601,
|
22
|
-
:status => nil
|
23
|
-
}.freeze
|
24
|
-
|
25
|
-
RECORD_SKELETON = {
|
26
|
-
'screen_name' => nil,
|
27
|
-
'retweeted_status' => nil,
|
28
|
-
'status' => {
|
29
|
-
'in_reply_to_screen_name' => nil,
|
30
|
-
'created_at' => nil,
|
31
|
-
'text' => nil
|
32
|
-
}.freeze
|
33
|
-
}.freeze
|
34
|
-
|
35
|
-
def create_record(fields = {})
|
36
|
-
record = create_nonrt_record(nonrt_fields(fields))
|
37
|
-
modify_to_rt_record(record, fields[:rt_user]) if fields[:rt_user]
|
38
|
-
record
|
39
|
-
end
|
40
|
-
|
41
|
-
def create_tweet(fields = {})
|
42
|
-
Tweetwine::Tweet.new(create_record(fields), FIELD_PATHS)
|
43
|
-
end
|
44
|
-
|
45
|
-
def at_default_time(&block)
|
46
|
-
Timecop.freeze(TweetHelper::DEFAULT_TIMESTAMP, &block)
|
47
|
-
end
|
48
|
-
|
49
|
-
def create_timestamp(minus_seconds)
|
50
|
-
(TweetHelper::DEFAULT_TIMESTAMP - minus_seconds).iso8601
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def find_hash_of_field_path(hash, path)
|
56
|
-
path = [path] unless path.is_a? Array
|
57
|
-
if path.size > 1
|
58
|
-
hash_path, field = path[0..-2], path.last
|
59
|
-
[Tweetwine::Support.find_hash_path(hash, hash_path), field]
|
60
|
-
else
|
61
|
-
[hash, path.first]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def nonrt_fields(fields)
|
66
|
-
DEFAULT_FIELD_VALUES.merge(fields.reject { |(k, v)| k == :rt_user })
|
67
|
-
end
|
68
|
-
|
69
|
-
def create_nonrt_record(fields)
|
70
|
-
FIELD_PATHS.inject(deep_copy(RECORD_SKELETON)) do |result, (path_name, path_actual)|
|
71
|
-
hash, field = find_hash_of_field_path(result, path_actual)
|
72
|
-
hash[field] = fields[path_name]
|
73
|
-
result
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def modify_to_rt_record(record, rt_user)
|
78
|
-
rt_hash, rt_field = find_hash_of_field_path(record, FIELD_PATHS[:retweet])
|
79
|
-
fr_hash, fr_field = find_hash_of_field_path(record, FIELD_PATHS[:from_user])
|
80
|
-
st_hash, st_field = find_hash_of_field_path(record, FIELD_PATHS[:status])
|
81
|
-
rt_hash[rt_field] = {
|
82
|
-
fr_field => fr_hash[fr_field].dup,
|
83
|
-
'status' => st_hash.dup
|
84
|
-
}
|
85
|
-
fr_hash[fr_field] = rt_user
|
86
|
-
st_hash[st_field] = 'retweeted status text. you should not see me.'
|
87
|
-
cr_hash, cr_field = find_hash_of_field_path(record, FIELD_PATHS[:created_at])
|
88
|
-
cr_hash[cr_field] = 'old created timestamp. you should not see me.'
|
89
|
-
end
|
90
|
-
|
91
|
-
def deep_copy(obj)
|
92
|
-
Marshal.load(Marshal.dump(obj))
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|