twitter4r 0.1.1 → 0.2.0
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.
- data/lib/twitter/client/base.rb +81 -0
- data/lib/twitter/client/friendship.rb +34 -0
- data/lib/twitter/client/messaging.rb +61 -0
- data/lib/twitter/client/status.rb +39 -0
- data/lib/twitter/client/timeline.rb +62 -0
- data/lib/twitter/client/user.rb +33 -0
- data/lib/twitter/client.rb +18 -0
- data/lib/twitter/config.rb +69 -0
- data/lib/twitter/console.rb +28 -0
- data/lib/twitter/core.rb +109 -171
- data/lib/twitter/ext/stdlib.rb +32 -0
- data/lib/twitter/ext.rb +2 -0
- data/lib/twitter/extras.rb +39 -0
- data/lib/twitter/meta.rb +16 -1
- data/lib/twitter/model.rb +331 -0
- data/lib/twitter/version.rb +7 -2
- data/lib/twitter.rb +16 -5
- data/spec/spec_helper.rb +47 -4
- data/spec/twitter/client/base_spec.rb +232 -0
- data/spec/twitter/client/friendship_spec.rb +70 -0
- data/spec/twitter/client/messaging_spec.rb +92 -0
- data/spec/twitter/client/status_spec.rb +85 -0
- data/spec/twitter/client/timeline_spec.rb +69 -0
- data/spec/twitter/client/user_spec.rb +141 -0
- data/spec/twitter/client_spec.rb +2 -0
- data/spec/twitter/config_spec.rb +86 -0
- data/spec/twitter/console_spec.rb +15 -0
- data/spec/twitter/core_spec.rb +32 -353
- data/spec/twitter/deprecated_spec.rb +177 -0
- data/spec/twitter/ext/stdlib_spec.rb +42 -0
- data/spec/twitter/extras_spec.rb +46 -0
- data/spec/twitter/meta_spec.rb +5 -4
- data/spec/twitter/model_spec.rb +458 -0
- data/spec/twitter/version_spec.rb +2 -2
- metadata +46 -10
data/spec/twitter/meta_spec.rb
CHANGED
@@ -22,7 +22,6 @@ module ERBMetaMixin
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe "Twitter::Meta cache policy" do
|
25
|
-
include ERBMetaMixin
|
26
25
|
include ERBMetaMixin
|
27
26
|
before(:each) do
|
28
27
|
@root_dir = project_root_dir
|
@@ -33,7 +32,7 @@ describe "Twitter::Meta cache policy" do
|
|
33
32
|
end
|
34
33
|
|
35
34
|
it "should store value returned from project_files in @project_files after first glob" do
|
36
|
-
@meta.instance_eval("@project_files").should
|
35
|
+
@meta.instance_eval("@project_files").should eql(nil)
|
37
36
|
@meta.project_files
|
38
37
|
@meta.instance_eval("@project_files").should eql(@expected_project_files)
|
39
38
|
@meta.project_files
|
@@ -41,7 +40,7 @@ describe "Twitter::Meta cache policy" do
|
|
41
40
|
end
|
42
41
|
|
43
42
|
it "should store value returned from spec_files in @spec_files after first glob" do
|
44
|
-
@meta.instance_eval("@spec_files").should
|
43
|
+
@meta.instance_eval("@spec_files").should eql(nil)
|
45
44
|
@meta.spec_files
|
46
45
|
@meta.instance_eval("@spec_files").should eql(@expected_spec_files)
|
47
46
|
@meta.spec_files
|
@@ -83,7 +82,9 @@ describe "Twitter::Meta" do
|
|
83
82
|
spec = @meta.gem_spec
|
84
83
|
expected_spec_hash = @expected_yaml_hash['spec']
|
85
84
|
expected_spec_hash.each do |key, val|
|
86
|
-
|
85
|
+
unless val.is_a?(Hash)
|
86
|
+
spec.send(key).should.eql? expected_spec_hash[key]
|
87
|
+
end
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
@@ -0,0 +1,458 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
module Test
|
4
|
+
class Model
|
5
|
+
include Twitter::ModelMixin
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Twitter::Status, "unmarshaling" do
|
10
|
+
before(:each) do
|
11
|
+
@json_hash = { "text" => "Thinking Zipcar is lame...",
|
12
|
+
"id" => 46672912,
|
13
|
+
"user" => {"name" => "Angie",
|
14
|
+
"description" => "TV junkie...",
|
15
|
+
"location" => "NoVA",
|
16
|
+
"profile_image_url" => "http:\/\/assets0.twitter.com\/system\/user\/profile_image\/5483072\/normal\/eye.jpg?1177462492",
|
17
|
+
"url" => nil,
|
18
|
+
"id" => 5483072,
|
19
|
+
"protected" => false,
|
20
|
+
"screen_name" => "ang_410"},
|
21
|
+
"created_at" => "Wed May 02 03:04:54 +0000 2007"}
|
22
|
+
@user = Twitter::User.new @json_hash["user"]
|
23
|
+
@status = Twitter::Status.new @json_hash
|
24
|
+
@status.user = @user
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should respond to unmarshal class method" do
|
28
|
+
Twitter::Status.should respond_to(:unmarshal)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return expected Twitter::Status object for singular case" do
|
32
|
+
status = Twitter::Status.unmarshal(JSON.unparse(@json_hash))
|
33
|
+
status.should_not be(nil)
|
34
|
+
status.should eql(@status)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return expected array of Twitter::Status objects for plural case" do
|
38
|
+
statuses = Twitter::Status.unmarshal(JSON.unparse([@json_hash]))
|
39
|
+
statuses.should_not be(nil)
|
40
|
+
statuses.should have(1).entries
|
41
|
+
statuses.first.should eql(@status)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe Twitter::User, "unmarshaling" do
|
46
|
+
before(:each) do
|
47
|
+
@json_hash = { "name" => "Lucy Snowe",
|
48
|
+
"description" => "School Mistress Entrepreneur",
|
49
|
+
"location" => "Villette",
|
50
|
+
"url" => "http://villetteschoolforgirls.com",
|
51
|
+
"id" => 859303,
|
52
|
+
"protected" => true,
|
53
|
+
"screen_name" => "LucyDominatrix", }
|
54
|
+
@user = Twitter::User.new @json_hash
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should respond to unmarshal class method" do
|
58
|
+
Twitter::User.should respond_to(:unmarshal)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should return expected arry of Twitter::User objects for plural case" do
|
62
|
+
users = Twitter::User.unmarshal(JSON.unparse([@json_hash]))
|
63
|
+
users.should have(1).entries
|
64
|
+
users.first.should eql(@user)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return expected Twitter::User object for singular case" do
|
68
|
+
user = Twitter::User.unmarshal(JSON.unparse(@json_hash))
|
69
|
+
user.should_not be(nil)
|
70
|
+
user.should eql(@user)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "Twitter::ModelMixin#to_hash" do
|
75
|
+
before(:all) do
|
76
|
+
class Model
|
77
|
+
include Twitter::ModelMixin
|
78
|
+
@@ATTRIBUTES = [:id, :name, :value, :unused_attr]
|
79
|
+
attr_accessor *@@ATTRIBUTES
|
80
|
+
def self.attributes; @@ATTRIBUTES; end
|
81
|
+
end
|
82
|
+
|
83
|
+
class Hash
|
84
|
+
def eql?(other)
|
85
|
+
return false unless other # trivial nil case.
|
86
|
+
return false unless self.keys.eql?(other.keys)
|
87
|
+
self.each do |key,val|
|
88
|
+
return false unless self[key].eql?(other[key])
|
89
|
+
end
|
90
|
+
true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
before(:each) do
|
96
|
+
@attributes = {:id => 14, :name => 'State', :value => 'Illinois'}
|
97
|
+
@model = Model.new(@attributes)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should return expected hash representation of given model object" do
|
101
|
+
@model.to_hash.should eql(@attributes)
|
102
|
+
end
|
103
|
+
|
104
|
+
after(:each) do
|
105
|
+
nilize(@attributes, @model)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe Twitter::User, ".find" do
|
110
|
+
before(:each) do
|
111
|
+
@twitter = Twitter::Client.from_config 'config/twitter.yml'
|
112
|
+
@id = 2423423
|
113
|
+
@screen_name = 'ascreenname'
|
114
|
+
@expected_user = Twitter::User.new(:id => @id, :screen_name => @screen_name)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should invoke given Twitter::Client's #user method with expected arguments" do
|
118
|
+
# case where id => @id
|
119
|
+
@twitter.should_receive(:user).with(@id).and_return(@expected_user)
|
120
|
+
user = Twitter::User.find(@id, @twitter)
|
121
|
+
user.should eql(@expected_user)
|
122
|
+
|
123
|
+
# case where id => @screen_name, which is also valid
|
124
|
+
@twitter.should_receive(:user).with(@screen_name).and_return(@expected_user)
|
125
|
+
user = Twitter::User.find(@screen_name, @twitter)
|
126
|
+
user.should eql(@expected_user)
|
127
|
+
end
|
128
|
+
|
129
|
+
after(:each) do
|
130
|
+
nilize(@twitter, @id, @screen_name, @expected_user)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe Twitter::Status, ".find" do
|
135
|
+
before(:each) do
|
136
|
+
@twitter = Twitter::Client.from_config 'config/twitter.yml'
|
137
|
+
@id = 9439843
|
138
|
+
@text = 'My crummy status message'
|
139
|
+
@user = Twitter::User.new(:id => @id, :screen_name => @screen_name)
|
140
|
+
@expected_status = Twitter::Status.new(:id => @id, :text => @text, :user => @user)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should invoke given Twitter::Client's #status method with expected arguments" do
|
144
|
+
@twitter.should_receive(:status).with(:get, @id).and_return(@expected_status)
|
145
|
+
status = Twitter::Status.find(@id, @twitter)
|
146
|
+
status.should eql(@expected_status)
|
147
|
+
end
|
148
|
+
|
149
|
+
after(:each) do
|
150
|
+
nilize(@twitter, @id, @text, @user, @expected_status)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe Test::Model, "#bless" do
|
155
|
+
before(:each) do
|
156
|
+
@twitter = Twitter::Client.from_config('config/twitter.yml')
|
157
|
+
@model = Test::Model.new
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should delegate to #basic_bless" do
|
161
|
+
@model.should_receive(:basic_bless).and_return(@twitter)
|
162
|
+
@model.bless(@twitter)
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should set client attribute of self" do
|
166
|
+
@model.should_receive(:client=).once
|
167
|
+
@model.bless(@twitter)
|
168
|
+
end
|
169
|
+
|
170
|
+
after(:each) do
|
171
|
+
nilize(@model, @twitter)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
describe Twitter::User, "#is_me?" do
|
176
|
+
before(:each) do
|
177
|
+
@twitter = Twitter::Client.from_config('config/twitter.yml')
|
178
|
+
@user_not_me = Twitter::User.new(:screen_name => 'notmylogin')
|
179
|
+
@user_me = Twitter::User.new(:screen_name => @twitter.instance_eval("@login"))
|
180
|
+
@user_not_me.bless(@twitter)
|
181
|
+
@user_me.bless(@twitter)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should return true when Twitter::User object represents authenticated user of client context" do
|
185
|
+
@user_me.is_me?.should be_true
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should return false when Twitter::User object does not represent authenticated user of client context" do
|
189
|
+
@user_not_me.is_me?.should be_false
|
190
|
+
end
|
191
|
+
|
192
|
+
after(:each) do
|
193
|
+
nilize(@twitter, @user_not_me, @user_me)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe Twitter::User, "#bless(client)" do
|
198
|
+
before(:each) do
|
199
|
+
@twitter = Twitter::Client.from_config('config/twitter.yml')
|
200
|
+
@user_not_me = Twitter::User.new(:screen_name => 'notmylogin')
|
201
|
+
@user_me = Twitter::User.new(:screen_name => @twitter.instance_eval("@login"))
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should add a followers method" do
|
205
|
+
@user_me.should_not respond_to?(:followers)
|
206
|
+
@user_me.bless(@twitter)
|
207
|
+
@user_me.should respond_to?(:followers)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "should not add a followers method" do
|
211
|
+
@user_not_me.should_not respond_to?(:followers)
|
212
|
+
@user_not_me.bless(@twitter)
|
213
|
+
@user_not_me.should_not respond_to?(:followers)
|
214
|
+
end
|
215
|
+
|
216
|
+
after(:each) do
|
217
|
+
nilize(@twitter, @user_not_me, @user_me)
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
describe Twitter::User, "#friends" do
|
222
|
+
before(:each) do
|
223
|
+
@twitter = Twitter::Client.from_config('config/twitter.yml')
|
224
|
+
@id = 5701682
|
225
|
+
@user = Twitter::User.new(:id => @id, :screen_name => 'twitter4r')
|
226
|
+
@user.bless(@twitter)
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should delegate to @client.user(@id, :friends)" do
|
230
|
+
@twitter.should_receive(:user).with(@id, :friends)
|
231
|
+
@user.friends
|
232
|
+
end
|
233
|
+
|
234
|
+
after(:each) do
|
235
|
+
nilize(@twitter, @id, @user)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
describe Twitter::User, "#followers" do
|
240
|
+
before(:each) do
|
241
|
+
@twitter = Twitter::Client.from_config('config/twitter.yml')
|
242
|
+
@id = 5701682
|
243
|
+
@user = Twitter::User.new(:id => @id, :screen_name => 'twitter4r')
|
244
|
+
@user.bless(@twitter)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should delegate to @client.user(@id, :followers)" do
|
248
|
+
@twitter.should_receive(:user).with(@id, :followers)
|
249
|
+
@user.followers
|
250
|
+
end
|
251
|
+
|
252
|
+
after(:each) do
|
253
|
+
nilize(@twitter, @id, @user)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
describe Test::Model, "#to_i" do
|
258
|
+
before(:each) do
|
259
|
+
@id = 234324285
|
260
|
+
class Test::Model
|
261
|
+
attr_accessor :id
|
262
|
+
end
|
263
|
+
@model = Test::Model.new(:id => @id)
|
264
|
+
end
|
265
|
+
|
266
|
+
it "should return @id attribute" do
|
267
|
+
@model.to_i.should eql(@id)
|
268
|
+
end
|
269
|
+
|
270
|
+
after(:each) do
|
271
|
+
nilize(@model, @id)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
describe Test::Model, "#to_s" do
|
276
|
+
before(:each) do
|
277
|
+
class Test::Model
|
278
|
+
attr_accessor :text
|
279
|
+
end
|
280
|
+
@text = 'Some text for the message body here'
|
281
|
+
@model = Test::Model.new(:text => @text)
|
282
|
+
end
|
283
|
+
|
284
|
+
it "should return expected text when a @text attribute exists for the model" do
|
285
|
+
@model.to_s.should eql(@text)
|
286
|
+
end
|
287
|
+
|
288
|
+
after(:each) do
|
289
|
+
nilize(@model)
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
describe Twitter::Message, ".find" do
|
294
|
+
it "should raise NotImplementedError due to Twitter (as opposed to Twitter4R) API limitation" do
|
295
|
+
lambda {
|
296
|
+
Twitter::Message.find(123, nil)
|
297
|
+
}.should raise_error(NotImplementedError)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe Twitter::Status, ".create" do
|
302
|
+
before(:each) do
|
303
|
+
@twitter = client_context
|
304
|
+
@text = 'My status update'
|
305
|
+
@status = Twitter::Status.new(:text => @text, :client => @twitter)
|
306
|
+
end
|
307
|
+
|
308
|
+
it "should invoke #status(:post, text) on client context given" do
|
309
|
+
@twitter.should_receive(:status).with(:post, @text).and_return(@status)
|
310
|
+
Twitter::Status.create(:text => @text, :client => @twitter)
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should raise an ArgumentError when no client is given in params" do
|
314
|
+
lambda {
|
315
|
+
Twitter::Status.create(:text => @text)
|
316
|
+
}.should raise_error(ArgumentError)
|
317
|
+
end
|
318
|
+
|
319
|
+
it "should raise an ArgumentError when no text is given in params" do
|
320
|
+
@twitter.should_receive(:is_a?).with(Twitter::Client)
|
321
|
+
lambda {
|
322
|
+
Twitter::Status.create(:client => @twitter)
|
323
|
+
}.should raise_error(ArgumentError)
|
324
|
+
end
|
325
|
+
|
326
|
+
it "should raise an ArgumentError when text given in params is not a String" do
|
327
|
+
lambda {
|
328
|
+
Twitter::Status.create(:client => @twitter, :text => 234493)
|
329
|
+
}.should raise_error(ArgumentError)
|
330
|
+
end
|
331
|
+
|
332
|
+
it "should raise an ArgumentError when client context given in params is not a Twitter::Client object" do
|
333
|
+
lambda {
|
334
|
+
Twitter::Status.create(:client => 'a string instead of a Twitter::Client', :text => @text)
|
335
|
+
}.should raise_error(ArgumentError)
|
336
|
+
end
|
337
|
+
|
338
|
+
after(:each) do
|
339
|
+
nilize(@twitter, @text, @status)
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
343
|
+
describe Twitter::Message, ".create" do
|
344
|
+
before(:each) do
|
345
|
+
@twitter = client_context
|
346
|
+
@text = 'Just between you and I, Lantana and Gosford Park are two of my favorite movies'
|
347
|
+
@recipient = Twitter::User.new(:id => 234958)
|
348
|
+
@message = Twitter::Message.new(:text => @text, :recipient => @recipient)
|
349
|
+
end
|
350
|
+
|
351
|
+
it "should invoke #message(:post, text, recipient) on client context given" do
|
352
|
+
@twitter.should_receive(:message).with(:post, @text, @recipient).and_return(@message)
|
353
|
+
Twitter::Message.create(:client => @twitter, :text => @text, :recipient => @recipient)
|
354
|
+
end
|
355
|
+
|
356
|
+
it "should raise an ArgumentError if no client context is given in params" do
|
357
|
+
lambda {
|
358
|
+
Twitter::Message.create(:text => @text, :recipient => @recipient)
|
359
|
+
}.should raise_error(ArgumentError)
|
360
|
+
end
|
361
|
+
|
362
|
+
it "should raise an ArgumentError if client conext given in params is not a Twitter::Client object" do
|
363
|
+
lambda {
|
364
|
+
Twitter::Message.create(
|
365
|
+
:client => 3.14159,
|
366
|
+
:text => @text,
|
367
|
+
:recipient => @recipient)
|
368
|
+
}.should raise_error(ArgumentError)
|
369
|
+
end
|
370
|
+
|
371
|
+
it "should raise an ArgumentError if no text is given in params" do
|
372
|
+
@twitter.should_receive(:is_a?).with(Twitter::Client)
|
373
|
+
lambda {
|
374
|
+
Twitter::Message.create(
|
375
|
+
:client => @twitter,
|
376
|
+
:recipient => @recipient)
|
377
|
+
}.should raise_error(ArgumentError)
|
378
|
+
end
|
379
|
+
|
380
|
+
it "should raise an ArgumentError if text given in params is not a String" do
|
381
|
+
@twitter.should_receive(:is_a?).with(Twitter::Client)
|
382
|
+
lambda {
|
383
|
+
Twitter::Message.create(
|
384
|
+
:client => @twitter,
|
385
|
+
:text => Object.new,
|
386
|
+
:recipient => @recipient)
|
387
|
+
}.should raise_error(ArgumentError)
|
388
|
+
end
|
389
|
+
|
390
|
+
it "should raise an ArgumentError if no recipient is given in params" do
|
391
|
+
@text.should_receive(:is_a?).with(String)
|
392
|
+
lambda {
|
393
|
+
Twitter::Message.create(
|
394
|
+
:client => @twitter,
|
395
|
+
:text => @text)
|
396
|
+
}.should raise_error(ArgumentError)
|
397
|
+
end
|
398
|
+
|
399
|
+
it "should raise an ArgumentError if recipient given in params is not a Twitter::User, Integer or String object" do
|
400
|
+
@text.should_receive(:is_a?).with(String)
|
401
|
+
lambda {
|
402
|
+
Twitter::Message.create(
|
403
|
+
:client => @twitter,
|
404
|
+
:text => @text,
|
405
|
+
:recipient => 3.14159)
|
406
|
+
}.should raise_error(ArgumentError)
|
407
|
+
end
|
408
|
+
|
409
|
+
after(:each) do
|
410
|
+
nilize(@twitter, @text, @recipient, @message)
|
411
|
+
end
|
412
|
+
end
|
413
|
+
|
414
|
+
describe Twitter::User, "#befriend" do
|
415
|
+
before(:each) do
|
416
|
+
@twitter = client_context
|
417
|
+
@user = Twitter::User.new(
|
418
|
+
:id => 1234,
|
419
|
+
:screen_name => 'mylogin',
|
420
|
+
:client => @twitter)
|
421
|
+
@friend = Twitter::User.new(
|
422
|
+
:id => 5678,
|
423
|
+
:screen_name => 'friend',
|
424
|
+
:client => @twitter)
|
425
|
+
end
|
426
|
+
|
427
|
+
it "should invoke #friend(:add, user) on client context" do
|
428
|
+
@twitter.should_receive(:friend).with(:add, @friend).and_return(@friend)
|
429
|
+
@user.befriend(@friend)
|
430
|
+
end
|
431
|
+
|
432
|
+
after(:each) do
|
433
|
+
nilize(@twitter, @user, @friend)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
|
437
|
+
describe Twitter::User, "#defriend" do
|
438
|
+
before(:each) do
|
439
|
+
@twitter = client_context
|
440
|
+
@user = Twitter::User.new(
|
441
|
+
:id => 1234,
|
442
|
+
:screen_name => 'mylogin',
|
443
|
+
:client => @twitter)
|
444
|
+
@friend = Twitter::User.new(
|
445
|
+
:id => 5678,
|
446
|
+
:screen_name => 'friend',
|
447
|
+
:client => @twitter)
|
448
|
+
end
|
449
|
+
|
450
|
+
it "should invoke #friend(:remove, user) on client context" do
|
451
|
+
@twitter.should_receive(:friend).with(:remove, @friend).and_return(@friend)
|
452
|
+
@user.defriend(@friend)
|
453
|
+
end
|
454
|
+
|
455
|
+
after(:each) do
|
456
|
+
nilize(@twitter, @user, @friend)
|
457
|
+
end
|
458
|
+
end
|
@@ -5,13 +5,13 @@ VERSION_LIST = [Twitter::Version::MAJOR, Twitter::Version::MINOR, Twitter::Versi
|
|
5
5
|
EXPECTED_VERSION = VERSION_LIST.join('.')
|
6
6
|
EXPECTED_NAME = VERSION_LIST.join('_')
|
7
7
|
|
8
|
-
describe
|
8
|
+
describe Twitter::Version, ".to_version" do
|
9
9
|
it "should return #{EXPECTED_VERSION}" do
|
10
10
|
Twitter::Version.to_version.should eql(EXPECTED_VERSION)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
describe
|
14
|
+
describe Twitter::Version, ".to_name" do
|
15
15
|
it "should return #{EXPECTED_NAME}" do
|
16
16
|
Twitter::Version.to_name.should eql(EXPECTED_NAME)
|
17
17
|
end
|
metadata
CHANGED
@@ -3,12 +3,12 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: twitter4r
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-
|
8
|
-
summary: A clean Twitter client API in pure Ruby
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2007-07-08 00:00:00 -05:00
|
8
|
+
summary: A clean Twitter client API in pure Ruby. Will include Twitter add-ons also in Ruby.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
|
-
email: twitter4r-
|
11
|
+
email: twitter4r-users@googlegroups.com
|
12
12
|
homepage: http://twitter4r.rubyforge.org
|
13
13
|
rubyforge_project: twitter4r
|
14
14
|
description:
|
@@ -18,9 +18,9 @@ bindir: bin
|
|
18
18
|
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 1.8.2
|
24
24
|
version:
|
25
25
|
platform: ruby
|
26
26
|
signing_key:
|
@@ -30,13 +30,39 @@ authors:
|
|
30
30
|
- Susan Potter
|
31
31
|
files:
|
32
32
|
- lib/twitter.rb
|
33
|
+
- lib/twitter/config.rb
|
34
|
+
- lib/twitter/extras.rb
|
33
35
|
- lib/twitter/version.rb
|
36
|
+
- lib/twitter/client.rb
|
37
|
+
- lib/twitter/model.rb
|
34
38
|
- lib/twitter/meta.rb
|
39
|
+
- lib/twitter/ext.rb
|
35
40
|
- lib/twitter/core.rb
|
41
|
+
- lib/twitter/console.rb
|
42
|
+
- lib/twitter/client/user.rb
|
43
|
+
- lib/twitter/client/base.rb
|
44
|
+
- lib/twitter/client/status.rb
|
45
|
+
- lib/twitter/client/messaging.rb
|
46
|
+
- lib/twitter/client/timeline.rb
|
47
|
+
- lib/twitter/client/friendship.rb
|
48
|
+
- lib/twitter/ext/stdlib.rb
|
36
49
|
- spec/spec_helper.rb
|
50
|
+
- spec/twitter/model_spec.rb
|
37
51
|
- spec/twitter/core_spec.rb
|
52
|
+
- spec/twitter/client_spec.rb
|
53
|
+
- spec/twitter/extras_spec.rb
|
38
54
|
- spec/twitter/version_spec.rb
|
55
|
+
- spec/twitter/console_spec.rb
|
39
56
|
- spec/twitter/meta_spec.rb
|
57
|
+
- spec/twitter/config_spec.rb
|
58
|
+
- spec/twitter/deprecated_spec.rb
|
59
|
+
- spec/twitter/client/timeline_spec.rb
|
60
|
+
- spec/twitter/client/base_spec.rb
|
61
|
+
- spec/twitter/client/status_spec.rb
|
62
|
+
- spec/twitter/client/friendship_spec.rb
|
63
|
+
- spec/twitter/client/messaging_spec.rb
|
64
|
+
- spec/twitter/client/user_spec.rb
|
65
|
+
- spec/twitter/ext/stdlib_spec.rb
|
40
66
|
test_files: []
|
41
67
|
|
42
68
|
rdoc_options: []
|
@@ -47,7 +73,17 @@ executables: []
|
|
47
73
|
|
48
74
|
extensions: []
|
49
75
|
|
50
|
-
requirements:
|
51
|
-
|
52
|
-
|
53
|
-
|
76
|
+
requirements:
|
77
|
+
- Ruby 1.8.4+
|
78
|
+
- json gem, version 0.4.3 or higher
|
79
|
+
- jcode (for unicode support)
|
80
|
+
dependencies:
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: json
|
83
|
+
version_requirement:
|
84
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.4.3
|
89
|
+
version:
|