t 0.6.4 → 0.7.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/t/version.rb CHANGED
@@ -8,12 +8,12 @@ module T
8
8
 
9
9
  # @return [Integer]
10
10
  def self.minor
11
- 6
11
+ 7
12
12
  end
13
13
 
14
14
  # @return [Integer]
15
15
  def self.patch
16
- 4
16
+ 0
17
17
  end
18
18
 
19
19
  # @return [String, NilClass]
data/spec/cli_spec.rb CHANGED
@@ -35,7 +35,7 @@ testcli
35
35
 
36
36
  describe "#authorize" do
37
37
  before do
38
- @cli.options = @cli.options.merge(:profile => File.expand_path('/tmp/trc', __FILE__), :consumer_key => "abc123", :consumer_secret => "asdfasd223sd2", :prompt => true, :dry_run => true)
38
+ @cli.options = @cli.options.merge(:profile => project_path + "/tmp/trc", :consumer_key => "abc123", :consumer_secret => "asdfasd223sd2", :prompt => true, :display_url => true)
39
39
  stub_post("/oauth/request_token").
40
40
  to_return(:body => fixture("request_token"))
41
41
  stub_post("/oauth/access_token").
@@ -84,6 +84,20 @@ testcli
84
84
  @cli.block("sferik")
85
85
  $stdout.string.should =~ /^@testcli blocked 1 user/
86
86
  end
87
+ context "--id" do
88
+ before do
89
+ @cli.options = @cli.options.merge(:id => true)
90
+ stub_post("/1/blocks/create.json").
91
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
92
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
93
+ end
94
+ it "should request the correct resource" do
95
+ @cli.block("7505382")
96
+ a_post("/1/blocks/create.json").
97
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
98
+ should have_been_made
99
+ end
100
+ end
87
101
  end
88
102
 
89
103
  describe "#direct_messages" do
@@ -113,11 +127,32 @@ testcli
113
127
  sferik: I'm trying to debug the issue you were having with the Bundler Gemfile.lock shortref. What version of Ruby and RubyGems are you running? (about 1 year ago)
114
128
  eos
115
129
  end
130
+ context "--csv" do
131
+ before do
132
+ @cli.options = @cli.options.merge(:csv => true)
133
+ end
134
+ it "should output in CSV format" do
135
+ @cli.direct_messages
136
+ $stdout.string.should == <<-eos
137
+ ID,Posted at,Screen name,Text
138
+ 1773478249,2010-10-17 20:48:55 +0000,sferik,Sounds good. Meeting Tuesday is fine.
139
+ 1762960771,2010-10-14 21:43:30 +0000,sferik,That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does that work for you?
140
+ 1711812216,2010-10-01 15:07:12 +0000,sferik,I asked Yehuda about the stipend. I believe it has already been sent. Glad you're feeling better.
141
+ 1711417617,2010-10-01 13:09:27 +0000,sferik,Just checking in. How's everything going?
142
+ 1653301471,2010-09-16 16:13:27 +0000,sferik,Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think you'll be able to finish up your work on graphs this weekend?
143
+ 1645324992,2010-09-14 18:44:10 +0000,sferik,How are the graph enhancements coming?
144
+ 1632933616,2010-09-11 17:45:46 +0000,sferik,How are the graphs coming? I'm really looking forward to seeing what you do with Raphaël.
145
+ 1629239903,2010-09-10 18:21:36 +0000,sferik,Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
146
+ 1629166212,2010-09-10 17:56:53 +0000,sferik,I just committed a bunch of cleanup and fixes to RailsAdmin that touched many of files. Make sure you pull to avoid conflicts.
147
+ 1624782206,2010-09-09 18:11:48 +0000,sferik,I'm trying to debug the issue you were having with the Bundler Gemfile.lock shortref. What version of Ruby and RubyGems are you running?
148
+ eos
149
+ end
150
+ end
116
151
  context "--long" do
117
152
  before do
118
153
  @cli.options = @cli.options.merge(:long => true)
119
154
  end
120
- it "should list in long format" do
155
+ it "should output in long format" do
121
156
  @cli.direct_messages
122
157
  $stdout.string.should == <<-eos
123
158
  ID Posted at Screen name Text
@@ -197,11 +232,32 @@ ID Posted at Screen name Text
197
232
  hurrycane: I'm trying to debug the issue you were having with the Bundler Gemfile.lock shortref. What version of Ruby and RubyGems are you running? (about 1 year ago)
198
233
  eos
199
234
  end
235
+ context "--csv" do
236
+ before do
237
+ @cli.options = @cli.options.merge(:csv => true)
238
+ end
239
+ it "should output in CSV format" do
240
+ @cli.direct_messages_sent
241
+ $stdout.string.should == <<-eos
242
+ ID,Posted at,Screen name,Text
243
+ 1773478249,2010-10-17 20:48:55 +0000,hurrycane,Sounds good. Meeting Tuesday is fine.
244
+ 1762960771,2010-10-14 21:43:30 +0000,hurrycane,That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does that work for you?
245
+ 1711812216,2010-10-01 15:07:12 +0000,hurrycane,I asked Yehuda about the stipend. I believe it has already been sent. Glad you're feeling better.
246
+ 1711417617,2010-10-01 13:09:27 +0000,hurrycane,Just checking in. How's everything going?
247
+ 1653301471,2010-09-16 16:13:27 +0000,hurrycane,Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think you'll be able to finish up your work on graphs this weekend?
248
+ 1645324992,2010-09-14 18:44:10 +0000,hurrycane,How are the graph enhancements coming?
249
+ 1632933616,2010-09-11 17:45:46 +0000,hurrycane,How are the graphs coming? I'm really looking forward to seeing what you do with Raphaël.
250
+ 1629239903,2010-09-10 18:21:36 +0000,hurrycane,Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
251
+ 1629166212,2010-09-10 17:56:53 +0000,hurrycane,I just committed a bunch of cleanup and fixes to RailsAdmin that touched many of files. Make sure you pull to avoid conflicts.
252
+ 1624782206,2010-09-09 18:11:48 +0000,hurrycane,I'm trying to debug the issue you were having with the Bundler Gemfile.lock shortref. What version of Ruby and RubyGems are you running?
253
+ eos
254
+ end
255
+ end
200
256
  context "--long" do
201
257
  before do
202
258
  @cli.options = @cli.options.merge(:long => true)
203
259
  end
204
- it "should list in long format" do
260
+ it "should output in long format" do
205
261
  @cli.direct_messages_sent
206
262
  $stdout.string.should == <<-eos
207
263
  ID Posted at Screen name Text
@@ -280,15 +336,19 @@ ID Posted at Screen name Text
280
336
  end
281
337
  it "should have the correct output" do
282
338
  @cli.disciples
283
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
339
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
284
340
  end
285
- context "--created" do
341
+ context "--csv" do
286
342
  before do
287
- @cli.options = @cli.options.merge(:created => true)
343
+ @cli.options = @cli.options.merge(:csv => true)
288
344
  end
289
- it "should sort by the time when Twitter acount was created" do
345
+ it "should output in CSV format" do
290
346
  @cli.disciples
291
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
347
+ $stdout.string.should == <<-eos
348
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
349
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
350
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
351
+ eos
292
352
  end
293
353
  end
294
354
  context "--favorites" do
@@ -297,7 +357,7 @@ ID Posted at Screen name Text
297
357
  end
298
358
  it "should sort by number of favorites" do
299
359
  @cli.disciples
300
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
360
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
301
361
  end
302
362
  end
303
363
  context "--followers" do
@@ -306,7 +366,7 @@ ID Posted at Screen name Text
306
366
  end
307
367
  it "should sort by number of followers" do
308
368
  @cli.disciples
309
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
369
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
310
370
  end
311
371
  end
312
372
  context "--friends" do
@@ -315,7 +375,7 @@ ID Posted at Screen name Text
315
375
  end
316
376
  it "should sort by number of friends" do
317
377
  @cli.disciples
318
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
378
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
319
379
  end
320
380
  end
321
381
  context "--listed" do
@@ -324,14 +384,14 @@ ID Posted at Screen name Text
324
384
  end
325
385
  it "should sort by number of list memberships" do
326
386
  @cli.disciples
327
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
387
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
328
388
  end
329
389
  end
330
390
  context "--long" do
331
391
  before do
332
392
  @cli.options = @cli.options.merge(:long => true)
333
393
  end
334
- it "should list in long format" do
394
+ it "should output in long format" do
335
395
  @cli.disciples
336
396
  $stdout.string.should == <<-eos
337
397
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -340,13 +400,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
340
400
  eos
341
401
  end
342
402
  end
403
+ context "--posted" do
404
+ before do
405
+ @cli.options = @cli.options.merge(:posted => true)
406
+ end
407
+ it "should sort by the time when Twitter acount was created" do
408
+ @cli.disciples
409
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
410
+ end
411
+ end
343
412
  context "--reverse" do
344
413
  before do
345
414
  @cli.options = @cli.options.merge(:reverse => true)
346
415
  end
347
416
  it "should reverse the order of the sort" do
348
417
  @cli.disciples
349
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
418
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
350
419
  end
351
420
  end
352
421
  context "--tweets" do
@@ -355,7 +424,61 @@ ID Since Tweets Favorites Listed Following Followers Screen
355
424
  end
356
425
  it "should sort by number of Tweets" do
357
426
  @cli.disciples
358
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
427
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
428
+ end
429
+ end
430
+ context "--unsorted" do
431
+ before do
432
+ @cli.options = @cli.options.merge(:unsorted => true)
433
+ end
434
+ it "should not be sorted" do
435
+ @cli.disciples
436
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
437
+ end
438
+ end
439
+ context "with a user passed" do
440
+ before do
441
+ stub_get("/1/followers/ids.json").
442
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
443
+ to_return(:body => fixture("followers_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
444
+ stub_get("/1/friends/ids.json").
445
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
446
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
447
+ end
448
+ it "should request the correct resource" do
449
+ @cli.disciples("sferik")
450
+ a_get("/1/followers/ids.json").
451
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
452
+ should have_been_made
453
+ a_get("/1/friends/ids.json").
454
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
455
+ should have_been_made
456
+ a_get("/1/users/lookup.json").
457
+ with(:query => {:user_id => "213747670,428004849", :include_entities => "false"}).
458
+ should have_been_made
459
+ end
460
+ context "--id" do
461
+ before do
462
+ @cli.options = @cli.options.merge(:id => true)
463
+ stub_get("/1/followers/ids.json").
464
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
465
+ to_return(:body => fixture("followers_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
466
+ stub_get("/1/friends/ids.json").
467
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
468
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
469
+ end
470
+ it "should request the correct resource" do
471
+ @cli.disciples("7505382")
472
+ a_get("/1/followers/ids.json").
473
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
474
+ should have_been_made
475
+ a_get("/1/friends/ids.json").
476
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
477
+ should have_been_made
478
+ a_get("/1/users/lookup.json").
479
+ with(:query => {:user_id => "213747670,428004849", :include_entities => "false"}).
480
+ should have_been_made
481
+ end
359
482
  end
360
483
  end
361
484
  end
@@ -377,6 +500,192 @@ ID Since Tweets Favorites Listed Following Followers Screen
377
500
  @cli.dm("pengwynn", "Creating a fixture for the Twitter gem")
378
501
  $stdout.string.chomp.should == "Direct Message sent from @testcli to @pengwynn (about 1 year ago)."
379
502
  end
503
+ context "--id" do
504
+ before do
505
+ @cli.options = @cli.options.merge(:id => true)
506
+ stub_post("/1/direct_messages/new.json").
507
+ with(:body => {:user_id => "14100886", :text => "Creating a fixture for the Twitter gem", :include_entities => "false"}).
508
+ to_return(:body => fixture("direct_message.json"), :headers => {:content_type => "application/json; charset=utf-8"})
509
+ end
510
+ it "should request the correct resource" do
511
+ @cli.dm("14100886", "Creating a fixture for the Twitter gem")
512
+ a_post("/1/direct_messages/new.json").
513
+ with(:body => {:user_id => "14100886", :text => "Creating a fixture for the Twitter gem", :include_entities => "false"}).
514
+ should have_been_made
515
+ end
516
+ end
517
+ end
518
+
519
+ describe "#does_contain" do
520
+ before do
521
+ @cli.options = @cli.options.merge(:profile => fixture_path + "/.trc")
522
+ stub_get("/1/lists/members/show.json").
523
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "testcli", :slug => "presidents"}).
524
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
525
+ end
526
+ it "should request the correct resource" do
527
+ @cli.does_contain("presidents")
528
+ a_get("/1/lists/members/show.json").
529
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "testcli", :slug => "presidents"}).
530
+ should have_been_made
531
+ end
532
+ it "should have the correct output" do
533
+ @cli.does_contain("presidents")
534
+ $stdout.string.chomp.should == "Yes, @testcli/presidents contains @testcli."
535
+ end
536
+ context "--id" do
537
+ before do
538
+ @cli.options = @cli.options.merge(:id => true)
539
+ stub_get("/1/users/show.json").
540
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
541
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
542
+ stub_get("/1/lists/members/show.json").
543
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "sferik", :slug => "presidents"}).
544
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
545
+ end
546
+ it "should request the correct resource" do
547
+ @cli.does_contain("presidents", "7505382")
548
+ a_get("/1/users/show.json").
549
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
550
+ should have_been_made
551
+ a_get("/1/lists/members/show.json").
552
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "sferik", :slug => "presidents"}).
553
+ should have_been_made
554
+ end
555
+ end
556
+ context "with an owner passed" do
557
+ it "should have the correct output" do
558
+ @cli.does_contain("testcli/presidents", "testcli")
559
+ $stdout.string.chomp.should == "Yes, @testcli/presidents contains @testcli."
560
+ end
561
+ context "--id" do
562
+ before do
563
+ @cli.options = @cli.options.merge(:id => true)
564
+ stub_get("/1/users/show.json").
565
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
566
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
567
+ stub_get("/1/lists/members/show.json").
568
+ with(:query => {:owner_screen_name => "sferik", :screen_name => "sferik", :slug => "presidents"}).
569
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
570
+ end
571
+ it "should request the correct resource" do
572
+ @cli.does_contain("7505382/presidents", "7505382")
573
+ a_get("/1/users/show.json").
574
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
575
+ should have_been_made.times(2)
576
+ a_get("/1/lists/members/show.json").
577
+ with(:query => {:owner_screen_name => "sferik", :screen_name => "sferik", :slug => "presidents"}).
578
+ should have_been_made
579
+ end
580
+ end
581
+ end
582
+ context "with a user passed" do
583
+ it "should have the correct output" do
584
+ @cli.does_contain("presidents", "testcli")
585
+ $stdout.string.chomp.should == "Yes, @testcli/presidents contains @testcli."
586
+ end
587
+ end
588
+ context "false" do
589
+ before do
590
+ stub_get("/1/lists/members/show.json").
591
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "testcli", :slug => "presidents"}).
592
+ to_return(:body => fixture("not_found.json"), :status => 404, :headers => {:content_type => "application/json; charset=utf-8"})
593
+ end
594
+ it "should exit" do
595
+ lambda do
596
+ @cli.does_contain("presidents")
597
+ end.should raise_error(SystemExit)
598
+ a_get("/1/lists/members/show.json").
599
+ with(:query => {:owner_screen_name => "testcli", :screen_name => "testcli", :slug => "presidents"}).
600
+ should have_been_made
601
+ end
602
+ end
603
+ end
604
+
605
+ describe "#does_follow" do
606
+ before do
607
+ @cli.options = @cli.options.merge(:profile => fixture_path + "/.trc")
608
+ stub_get("/1/friendships/exists.json").
609
+ with(:query => {:user_a => "ev", :user_b => "testcli"}).
610
+ to_return(:body => fixture("true.json"), :headers => {:content_type => "application/json; charset=utf-8"})
611
+ end
612
+ it "should request the correct resource" do
613
+ @cli.does_follow("ev")
614
+ a_get("/1/friendships/exists.json").
615
+ with(:query => {:user_a => "ev", :user_b => "testcli"}).
616
+ should have_been_made
617
+ end
618
+ it "should have the correct output" do
619
+ @cli.does_follow("ev")
620
+ $stdout.string.chomp.should == "Yes, @ev follows @testcli."
621
+ end
622
+ context "--id" do
623
+ before do
624
+ @cli.options = @cli.options.merge(:id => true)
625
+ stub_get("/1/users/show.json").
626
+ with(:query => {:user_id => "20", :include_entities => "false"}).
627
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
628
+ stub_get("/1/friendships/exists.json").
629
+ with(:query => {:user_a => "sferik", :user_b => "testcli"}).
630
+ to_return(:body => fixture("true.json"), :headers => {:content_type => "application/json; charset=utf-8"})
631
+ end
632
+ it "should request the correct resource" do
633
+ @cli.does_follow("20")
634
+ a_get("/1/users/show.json").
635
+ with(:query => {:user_id => "20", :include_entities => "false"}).
636
+ should have_been_made
637
+ a_get("/1/friendships/exists.json").
638
+ with(:query => {:user_a => "sferik", :user_b => "testcli"}).
639
+ should have_been_made
640
+ end
641
+ end
642
+ context "with a user passed" do
643
+ it "should have the correct output" do
644
+ @cli.does_follow("ev", "testcli")
645
+ $stdout.string.chomp.should == "Yes, @ev follows @testcli."
646
+ end
647
+ context "--id" do
648
+ before do
649
+ @cli.options = @cli.options.merge(:id => true)
650
+ stub_get("/1/users/show.json").
651
+ with(:query => {:user_id => "20", :include_entities => "false"}).
652
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
653
+ stub_get("/1/users/show.json").
654
+ with(:query => {:user_id => "428004849", :include_entities => "false"}).
655
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
656
+ stub_get("/1/friendships/exists.json").
657
+ with(:query => {:user_a => "sferik", :user_b => "sferik"}).
658
+ to_return(:body => fixture("true.json"), :headers => {:content_type => "application/json; charset=utf-8"})
659
+ end
660
+ it "should request the correct resource" do
661
+ @cli.does_follow("20", "428004849")
662
+ a_get("/1/users/show.json").
663
+ with(:query => {:user_id => "20", :include_entities => "false"}).
664
+ should have_been_made
665
+ a_get("/1/users/show.json").
666
+ with(:query => {:user_id => "428004849", :include_entities => "false"}).
667
+ should have_been_made
668
+ a_get("/1/friendships/exists.json").
669
+ with(:query => {:user_a => "sferik", :user_b => "sferik"}).
670
+ should have_been_made
671
+ end
672
+ end
673
+ end
674
+ context "false" do
675
+ before do
676
+ stub_get("/1/friendships/exists.json").
677
+ with(:query => {:user_a => "ev", :user_b => "testcli"}).
678
+ to_return(:body => fixture("false.json"), :headers => {:content_type => "application/json; charset=utf-8"})
679
+ end
680
+ it "should exit" do
681
+ lambda do
682
+ @cli.does_follow("ev")
683
+ end.should raise_error(SystemExit)
684
+ a_get("/1/friendships/exists.json").
685
+ with(:query => {:user_a => "ev", :user_b => "testcli"}).
686
+ should have_been_made
687
+ end
688
+ end
380
689
  end
381
690
 
382
691
  describe "#favorite" do
@@ -430,11 +739,39 @@ ID Since Tweets Favorites Listed Following Followers Screen
430
739
  kelseysilver: San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw (7 months ago)
431
740
  eos
432
741
  end
742
+ context "--csv" do
743
+ before do
744
+ @cli.options = @cli.options.merge(:csv => true)
745
+ end
746
+ it "should output in CSV format" do
747
+ @cli.favorites
748
+ $stdout.string.should == <<-eos
749
+ ID,Posted at,Screen name,Text
750
+ 194548121416630272,2011-04-23 22:07:41 +0000,natevillegas,RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present.
751
+ 194547993607806976,2011-04-23 22:07:10 +0000,TD,@kelseysilver how long will you be in town?
752
+ 194547987593183233,2011-04-23 22:07:09 +0000,rusashka,@maciej hahaha :) @gpena together we're going to cover all core 28 languages!
753
+ 194547824690597888,2011-04-23 22:06:30 +0000,fat,@stevej @xc i'm going to picket when i get back.
754
+ 194547658562605057,2011-04-23 22:05:51 +0000,wil,@0x9900 @paulnivin http://t.co/bwVdtAPe
755
+ 194547528430137344,2011-04-23 22:05:19 +0000,wangtian,"@tianhonghe @xiangxin72 oh, you can even order specific items?"
756
+ 194547402550689793,2011-04-23 22:04:49 +0000,shinypb,"@kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird"
757
+ 194547260233760768,2011-04-23 22:04:16 +0000,0x9900,@wil @paulnivin if you want to take you seriously don't say daemontools!
758
+ 194547084349804544,2011-04-23 22:03:34 +0000,kpk,@shinypb @skilldrick @hoverbird invented it
759
+ 194546876782092291,2011-04-23 22:02:44 +0000,skilldrick,@shinypb Well played :) @hoverbird
760
+ 194546811480969217,2011-04-23 22:02:29 +0000,sam,"Can someone project the date that I'll get a 27"" retina display?"
761
+ 194546738810458112,2011-04-23 22:02:11 +0000,shinypb,"@skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain."
762
+ 194546727670390784,2011-04-23 22:02:09 +0000,bartt,"@noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come."
763
+ 194546649203347456,2011-04-23 22:01:50 +0000,skilldrick,"@hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all."
764
+ 194546583608639488,2011-04-23 22:01:34 +0000,sean,@mep Thanks for coming by. Was great to have you.
765
+ 194546388707717120,2011-04-23 22:00:48 +0000,hoverbird,"@shinypb @trammell it's all suck a ""duck blur"" sometimes."
766
+ 194546264212385793,2011-04-23 22:00:18 +0000,kelseysilver,San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw
767
+ eos
768
+ end
769
+ end
433
770
  context "--long" do
434
771
  before do
435
772
  @cli.options = @cli.options.merge(:long => true)
436
773
  end
437
- it "should list in long format" do
774
+ it "should output in long format" do
438
775
  @cli.favorites
439
776
  $stdout.string.should == <<-eos
440
777
  ID Posted at Screen name Text
@@ -499,19 +836,39 @@ ID Posted at Screen name Text
499
836
  eos
500
837
  end
501
838
  end
839
+ context "with a user passed" do
840
+ before do
841
+ stub_get("/1/favorites/sferik.json").
842
+ with(:query => {:count => "20", :include_entities => "false"}).
843
+ to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
844
+ end
845
+ it "should request the correct resource" do
846
+ @cli.favorites("sferik")
847
+ a_get("/1/favorites/sferik.json").
848
+ with(:query => {:count => "20", :include_entities => "false"}).
849
+ should have_been_made
850
+ end
851
+ context "--id" do
852
+ before do
853
+ @cli.options = @cli.options.merge(:id => true)
854
+ stub_get("/1/favorites/7505382.json").
855
+ with(:query => {:count => "20", :include_entities => "false"}).
856
+ to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
857
+ end
858
+ it "should request the correct resource" do
859
+ @cli.favorites("7505382")
860
+ a_get("/1/favorites/7505382.json").
861
+ with(:query => {:count => "20", :include_entities => "false"}).
862
+ should have_been_made
863
+ end
864
+ end
865
+ end
502
866
  end
503
867
 
504
868
  describe "#follow" do
505
869
  before do
506
870
  @cli.options = @cli.options.merge(:profile => fixture_path + "/.trc")
507
871
  end
508
- context "no users" do
509
- it "should exit" do
510
- lambda do
511
- @cli.follow
512
- end.should raise_error
513
- end
514
- end
515
872
  context "one user" do
516
873
  it "should request the correct resource" do
517
874
  stub_post("/1/friendships/create.json").
@@ -529,6 +886,20 @@ ID Posted at Screen name Text
529
886
  @cli.follow("sferik")
530
887
  $stdout.string.should =~ /^@testcli is now following 1 more user\.$/
531
888
  end
889
+ context "--id" do
890
+ before do
891
+ @cli.options = @cli.options.merge(:id => true)
892
+ stub_post("/1/friendships/create.json").
893
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
894
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
895
+ end
896
+ it "should request the correct resource" do
897
+ @cli.follow("7505382")
898
+ a_post("/1/friendships/create.json").
899
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
900
+ should have_been_made
901
+ end
902
+ end
532
903
  context "Twitter is down" do
533
904
  it "should retry 3 times and then raise an error" do
534
905
  stub_post("/1/friendships/create.json").
@@ -565,15 +936,19 @@ ID Posted at Screen name Text
565
936
  end
566
937
  it "should have the correct output" do
567
938
  @cli.followings
568
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
939
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
569
940
  end
570
- context "--created" do
941
+ context "--csv" do
571
942
  before do
572
- @cli.options = @cli.options.merge(:created => true)
943
+ @cli.options = @cli.options.merge(:csv => true)
573
944
  end
574
- it "should sort by the time when Twitter acount was created" do
945
+ it "should output in CSV format" do
575
946
  @cli.followings
576
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
947
+ $stdout.string.should == <<-eos
948
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
949
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
950
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
951
+ eos
577
952
  end
578
953
  end
579
954
  context "--favorites" do
@@ -582,7 +957,7 @@ ID Posted at Screen name Text
582
957
  end
583
958
  it "should sort by number of favorites" do
584
959
  @cli.followings
585
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
960
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
586
961
  end
587
962
  end
588
963
  context "--followers" do
@@ -591,7 +966,7 @@ ID Posted at Screen name Text
591
966
  end
592
967
  it "should sort by number of followers" do
593
968
  @cli.followings
594
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
969
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
595
970
  end
596
971
  end
597
972
  context "--friends" do
@@ -600,7 +975,7 @@ ID Posted at Screen name Text
600
975
  end
601
976
  it "should sort by number of friends" do
602
977
  @cli.followings
603
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
978
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
604
979
  end
605
980
  end
606
981
  context "--listed" do
@@ -609,14 +984,14 @@ ID Posted at Screen name Text
609
984
  end
610
985
  it "should sort by number of list memberships" do
611
986
  @cli.followings
612
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
987
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
613
988
  end
614
989
  end
615
990
  context "--long" do
616
991
  before do
617
992
  @cli.options = @cli.options.merge(:long => true)
618
993
  end
619
- it "should list in long format" do
994
+ it "should output in long format" do
620
995
  @cli.followings
621
996
  $stdout.string.should == <<-eos
622
997
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -625,13 +1000,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
625
1000
  eos
626
1001
  end
627
1002
  end
1003
+ context "--posted" do
1004
+ before do
1005
+ @cli.options = @cli.options.merge(:posted => true)
1006
+ end
1007
+ it "should sort by the time when Twitter acount was created" do
1008
+ @cli.followings
1009
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1010
+ end
1011
+ end
628
1012
  context "--reverse" do
629
1013
  before do
630
1014
  @cli.options = @cli.options.merge(:reverse => true)
631
1015
  end
632
1016
  it "should reverse the order of the sort" do
633
1017
  @cli.followings
634
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1018
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
635
1019
  end
636
1020
  end
637
1021
  context "--tweets" do
@@ -640,7 +1024,49 @@ ID Since Tweets Favorites Listed Following Followers Screen
640
1024
  end
641
1025
  it "should sort by number of Tweets" do
642
1026
  @cli.followings
643
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1027
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1028
+ end
1029
+ end
1030
+ context "--unsorted" do
1031
+ before do
1032
+ @cli.options = @cli.options.merge(:unsorted => true)
1033
+ end
1034
+ it "should not be sorted" do
1035
+ @cli.followings
1036
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1037
+ end
1038
+ end
1039
+ context "with a user passed" do
1040
+ before do
1041
+ stub_get("/1/friends/ids.json").
1042
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1043
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1044
+ end
1045
+ it "should request the correct resource" do
1046
+ @cli.followings("sferik")
1047
+ a_get("/1/friends/ids.json").
1048
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1049
+ should have_been_made
1050
+ a_get("/1/users/lookup.json").
1051
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1052
+ should have_been_made
1053
+ end
1054
+ end
1055
+ context "--id" do
1056
+ before do
1057
+ @cli.options = @cli.options.merge(:id => true)
1058
+ stub_get("/1/friends/ids.json").
1059
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1060
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1061
+ end
1062
+ it "should request the correct resource" do
1063
+ @cli.followings("7505382")
1064
+ a_get("/1/friends/ids.json").
1065
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1066
+ should have_been_made
1067
+ a_get("/1/users/lookup.json").
1068
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1069
+ should have_been_made
644
1070
  end
645
1071
  end
646
1072
  end
@@ -665,15 +1091,19 @@ ID Since Tweets Favorites Listed Following Followers Screen
665
1091
  end
666
1092
  it "should have the correct output" do
667
1093
  @cli.followers
668
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1094
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
669
1095
  end
670
- context "--created" do
1096
+ context "--csv" do
671
1097
  before do
672
- @cli.options = @cli.options.merge(:created => true)
1098
+ @cli.options = @cli.options.merge(:csv => true)
673
1099
  end
674
- it "should sort by the time when Twitter acount was created" do
1100
+ it "should output in CSV format" do
675
1101
  @cli.followers
676
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1102
+ $stdout.string.should == <<-eos
1103
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
1104
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
1105
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
1106
+ eos
677
1107
  end
678
1108
  end
679
1109
  context "--favorites" do
@@ -682,7 +1112,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
682
1112
  end
683
1113
  it "should sort by number of favorites" do
684
1114
  @cli.followers
685
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1115
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
686
1116
  end
687
1117
  end
688
1118
  context "--followers" do
@@ -691,7 +1121,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
691
1121
  end
692
1122
  it "should sort by number of followers" do
693
1123
  @cli.followers
694
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1124
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
695
1125
  end
696
1126
  end
697
1127
  context "--friends" do
@@ -700,7 +1130,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
700
1130
  end
701
1131
  it "should sort by number of friends" do
702
1132
  @cli.followers
703
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1133
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
704
1134
  end
705
1135
  end
706
1136
  context "--listed" do
@@ -709,14 +1139,14 @@ ID Since Tweets Favorites Listed Following Followers Screen
709
1139
  end
710
1140
  it "should sort by number of list memberships" do
711
1141
  @cli.followers
712
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1142
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
713
1143
  end
714
1144
  end
715
1145
  context "--long" do
716
1146
  before do
717
1147
  @cli.options = @cli.options.merge(:long => true)
718
1148
  end
719
- it "should list in long format" do
1149
+ it "should output in long format" do
720
1150
  @cli.followers
721
1151
  $stdout.string.should == <<-eos
722
1152
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -725,13 +1155,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
725
1155
  eos
726
1156
  end
727
1157
  end
1158
+ context "--posted" do
1159
+ before do
1160
+ @cli.options = @cli.options.merge(:posted => true)
1161
+ end
1162
+ it "should sort by the time when Twitter acount was created" do
1163
+ @cli.followers
1164
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1165
+ end
1166
+ end
728
1167
  context "--reverse" do
729
1168
  before do
730
1169
  @cli.options = @cli.options.merge(:reverse => true)
731
1170
  end
732
1171
  it "should reverse the order of the sort" do
733
1172
  @cli.followers
734
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1173
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
735
1174
  end
736
1175
  end
737
1176
  context "--tweets" do
@@ -740,7 +1179,52 @@ ID Since Tweets Favorites Listed Following Followers Screen
740
1179
  end
741
1180
  it "should sort by number of Tweets" do
742
1181
  @cli.followers
743
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1182
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1183
+ end
1184
+ end
1185
+ context "--unsorted" do
1186
+ before do
1187
+ @cli.options = @cli.options.merge(:unsorted => true)
1188
+ end
1189
+ it "should not be sorted" do
1190
+ @cli.followers
1191
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1192
+ end
1193
+ end
1194
+ context "with a user passed" do
1195
+ before do
1196
+ stub_get("/1/followers/ids.json").
1197
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1198
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1199
+ stub_get("/1/users/lookup.json").
1200
+ with(:query => {:user_id => "213747670,428004849", :include_entities => "false"}).
1201
+ to_return(:body => fixture("users.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1202
+ end
1203
+ it "should request the correct resource" do
1204
+ @cli.followers("sferik")
1205
+ a_get("/1/followers/ids.json").
1206
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1207
+ should have_been_made
1208
+ a_get("/1/users/lookup.json").
1209
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1210
+ should have_been_made
1211
+ end
1212
+ context "--id" do
1213
+ before do
1214
+ @cli.options = @cli.options.merge(:id => true)
1215
+ stub_get("/1/followers/ids.json").
1216
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1217
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1218
+ end
1219
+ it "should request the correct resource" do
1220
+ @cli.followers("7505382")
1221
+ a_get("/1/followers/ids.json").
1222
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1223
+ should have_been_made
1224
+ a_get("/1/users/lookup.json").
1225
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1226
+ should have_been_made
1227
+ end
744
1228
  end
745
1229
  end
746
1230
  end
@@ -771,15 +1255,19 @@ ID Since Tweets Favorites Listed Following Followers Screen
771
1255
  end
772
1256
  it "should have the correct output" do
773
1257
  @cli.friends
774
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1258
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
775
1259
  end
776
- context "--created" do
1260
+ context "--csv" do
777
1261
  before do
778
- @cli.options = @cli.options.merge(:created => true)
1262
+ @cli.options = @cli.options.merge(:csv => true)
779
1263
  end
780
- it "should sort by the time when Twitter acount was created" do
1264
+ it "should output in CSV format" do
781
1265
  @cli.friends
782
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1266
+ $stdout.string.should == <<-eos
1267
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
1268
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
1269
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
1270
+ eos
783
1271
  end
784
1272
  end
785
1273
  context "--favorites" do
@@ -788,7 +1276,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
788
1276
  end
789
1277
  it "should sort by number of favorites" do
790
1278
  @cli.friends
791
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1279
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
792
1280
  end
793
1281
  end
794
1282
  context "--followers" do
@@ -797,7 +1285,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
797
1285
  end
798
1286
  it "should sort by number of followers" do
799
1287
  @cli.friends
800
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1288
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
801
1289
  end
802
1290
  end
803
1291
  context "--friends" do
@@ -806,7 +1294,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
806
1294
  end
807
1295
  it "should sort by number of friends" do
808
1296
  @cli.friends
809
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1297
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
810
1298
  end
811
1299
  end
812
1300
  context "--listed" do
@@ -815,14 +1303,14 @@ ID Since Tweets Favorites Listed Following Followers Screen
815
1303
  end
816
1304
  it "should sort by number of list memberships" do
817
1305
  @cli.friends
818
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1306
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
819
1307
  end
820
1308
  end
821
1309
  context "--long" do
822
1310
  before do
823
1311
  @cli.options = @cli.options.merge(:long => true)
824
1312
  end
825
- it "should list in long format" do
1313
+ it "should output in long format" do
826
1314
  @cli.friends
827
1315
  $stdout.string.should == <<-eos
828
1316
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -831,13 +1319,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
831
1319
  eos
832
1320
  end
833
1321
  end
1322
+ context "--posted" do
1323
+ before do
1324
+ @cli.options = @cli.options.merge(:posted => true)
1325
+ end
1326
+ it "should sort by the time when Twitter acount was created" do
1327
+ @cli.friends
1328
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1329
+ end
1330
+ end
834
1331
  context "--reverse" do
835
1332
  before do
836
1333
  @cli.options = @cli.options.merge(:reverse => true)
837
1334
  end
838
1335
  it "should reverse the order of the sort" do
839
1336
  @cli.friends
840
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1337
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
841
1338
  end
842
1339
  end
843
1340
  context "--tweets" do
@@ -846,7 +1343,61 @@ ID Since Tweets Favorites Listed Following Followers Screen
846
1343
  end
847
1344
  it "should sort by number of Tweets" do
848
1345
  @cli.friends
849
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1346
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1347
+ end
1348
+ end
1349
+ context "--unsorted" do
1350
+ before do
1351
+ @cli.options = @cli.options.merge(:unsorted => true)
1352
+ end
1353
+ it "should not be sorted" do
1354
+ @cli.friends
1355
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1356
+ end
1357
+ end
1358
+ context "with a user passed" do
1359
+ before do
1360
+ stub_get("/1/friends/ids.json").
1361
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1362
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1363
+ stub_get("/1/followers/ids.json").
1364
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1365
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1366
+ end
1367
+ it "should request the correct resource" do
1368
+ @cli.friends("sferik")
1369
+ a_get("/1/friends/ids.json").
1370
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1371
+ should have_been_made
1372
+ a_get("/1/followers/ids.json").
1373
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1374
+ should have_been_made
1375
+ a_get("/1/users/lookup.json").
1376
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1377
+ should have_been_made
1378
+ end
1379
+ context "--id" do
1380
+ before do
1381
+ @cli.options = @cli.options.merge(:id => true)
1382
+ stub_get("/1/friends/ids.json").
1383
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1384
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1385
+ stub_get("/1/followers/ids.json").
1386
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1387
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1388
+ end
1389
+ it "should request the correct resource" do
1390
+ @cli.friends("7505382")
1391
+ a_get("/1/friends/ids.json").
1392
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1393
+ should have_been_made
1394
+ a_get("/1/followers/ids.json").
1395
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1396
+ should have_been_made
1397
+ a_get("/1/users/lookup.json").
1398
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1399
+ should have_been_made
1400
+ end
850
1401
  end
851
1402
  end
852
1403
  end
@@ -877,15 +1428,19 @@ ID Since Tweets Favorites Listed Following Followers Screen
877
1428
  end
878
1429
  it "should have the correct output" do
879
1430
  @cli.leaders
880
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1431
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
881
1432
  end
882
- context "--created" do
1433
+ context "--csv" do
883
1434
  before do
884
- @cli.options = @cli.options.merge(:created => true)
1435
+ @cli.options = @cli.options.merge(:csv => true)
885
1436
  end
886
- it "should sort by the time when Twitter acount was created" do
1437
+ it "should output in CSV format" do
887
1438
  @cli.leaders
888
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1439
+ $stdout.string.should == <<-eos
1440
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
1441
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
1442
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
1443
+ eos
889
1444
  end
890
1445
  end
891
1446
  context "--favorites" do
@@ -894,7 +1449,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
894
1449
  end
895
1450
  it "should sort by number of favorites" do
896
1451
  @cli.leaders
897
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
1452
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
898
1453
  end
899
1454
  end
900
1455
  context "--followers" do
@@ -903,7 +1458,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
903
1458
  end
904
1459
  it "should sort by number of followers" do
905
1460
  @cli.leaders
906
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1461
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
907
1462
  end
908
1463
  end
909
1464
  context "--friends" do
@@ -912,7 +1467,7 @@ ID Since Tweets Favorites Listed Following Followers Screen
912
1467
  end
913
1468
  it "should sort by number of friends" do
914
1469
  @cli.leaders
915
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1470
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
916
1471
  end
917
1472
  end
918
1473
  context "--listed" do
@@ -921,14 +1476,14 @@ ID Since Tweets Favorites Listed Following Followers Screen
921
1476
  end
922
1477
  it "should sort by number of list memberships" do
923
1478
  @cli.leaders
924
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1479
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
925
1480
  end
926
1481
  end
927
1482
  context "--long" do
928
1483
  before do
929
1484
  @cli.options = @cli.options.merge(:long => true)
930
1485
  end
931
- it "should list in long format" do
1486
+ it "should output in long format" do
932
1487
  @cli.leaders
933
1488
  $stdout.string.should == <<-eos
934
1489
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -937,13 +1492,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
937
1492
  eos
938
1493
  end
939
1494
  end
1495
+ context "--posted" do
1496
+ before do
1497
+ @cli.options = @cli.options.merge(:posted => true)
1498
+ end
1499
+ it "should sort by the time when Twitter acount was created" do
1500
+ @cli.leaders
1501
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1502
+ end
1503
+ end
940
1504
  context "--reverse" do
941
1505
  before do
942
1506
  @cli.options = @cli.options.merge(:reverse => true)
943
1507
  end
944
1508
  it "should reverse the order of the sort" do
945
1509
  @cli.leaders
946
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1510
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
947
1511
  end
948
1512
  end
949
1513
  context "--tweets" do
@@ -952,26 +1516,205 @@ ID Since Tweets Favorites Listed Following Followers Screen
952
1516
  end
953
1517
  it "should sort by number of Tweets" do
954
1518
  @cli.leaders
955
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
1519
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1520
+ end
1521
+ end
1522
+ context "--unsorted" do
1523
+ before do
1524
+ @cli.options = @cli.options.merge(:unsorted => true)
1525
+ end
1526
+ it "should not be sorted" do
1527
+ @cli.leaders
1528
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1529
+ end
1530
+ end
1531
+ context "with a user passed" do
1532
+ before do
1533
+ stub_get("/1/friends/ids.json").
1534
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1535
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1536
+ stub_get("/1/followers/ids.json").
1537
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1538
+ to_return(:body => fixture("followers_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1539
+ end
1540
+ it "should request the correct resource" do
1541
+ @cli.leaders("sferik")
1542
+ a_get("/1/friends/ids.json").
1543
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1544
+ should have_been_made
1545
+ a_get("/1/followers/ids.json").
1546
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1547
+ should have_been_made
1548
+ a_get("/1/users/lookup.json").
1549
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1550
+ should have_been_made
1551
+ end
1552
+ context "--id" do
1553
+ before do
1554
+ @cli.options = @cli.options.merge(:id => true)
1555
+ stub_get("/1/friends/ids.json").
1556
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1557
+ to_return(:body => fixture("friends_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1558
+ stub_get("/1/followers/ids.json").
1559
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1560
+ to_return(:body => fixture("followers_ids.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1561
+ end
1562
+ it "should request the correct resource" do
1563
+ @cli.leaders("7505382")
1564
+ a_get("/1/friends/ids.json").
1565
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1566
+ should have_been_made
1567
+ a_get("/1/followers/ids.json").
1568
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1569
+ should have_been_made
1570
+ a_get("/1/users/lookup.json").
1571
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
1572
+ should have_been_made
1573
+ end
956
1574
  end
957
1575
  end
958
1576
  end
959
1577
 
960
- describe "#mentions" do
1578
+ describe "#lists" do
961
1579
  before do
962
- stub_get("/1/statuses/mentions.json").
963
- with(:query => {:count => "20", :include_entities => "false"}).
964
- to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1580
+ stub_get("/1/lists.json").
1581
+ with(:query => {:cursor => "-1"}).
1582
+ to_return(:body => fixture("lists.json"), :headers => {:content_type => "application/json; charset=utf-8"})
965
1583
  end
966
1584
  it "should request the correct resource" do
967
- @cli.mentions
968
- a_get("/1/statuses/mentions.json").
969
- with(:query => {:count => "20", :include_entities => "false"}).
1585
+ @cli.lists
1586
+ a_get("/1/lists.json").
1587
+ with(:query => {:cursor => "-1"}).
970
1588
  should have_been_made
971
1589
  end
972
1590
  it "should have the correct output" do
973
- @cli.mentions
974
- $stdout.string.should == <<-eos
1591
+ @cli.lists
1592
+ $stdout.string.rstrip.should == "@sferik/code-for-america @sferik/presidents"
1593
+ end
1594
+ context "--csv" do
1595
+ before do
1596
+ @cli.options = @cli.options.merge(:csv => true)
1597
+ end
1598
+ it "should output in CSV format" do
1599
+ @cli.lists
1600
+ $stdout.string.should == <<-eos
1601
+ ID,Created at,Screen name,Slug,Members,Subscribers,Mode,Description
1602
+ 21718825,2010-09-14 21:46:56 +0000,sferik,code-for-america,26,5,public,Code for America
1603
+ 8863586,2010-03-15 12:10:13 +0000,sferik,presidents,2,1,public,Presidents of the United States of America
1604
+ eos
1605
+ end
1606
+ end
1607
+ context "--long" do
1608
+ before do
1609
+ @cli.options = @cli.options.merge(:long => true)
1610
+ end
1611
+ it "should output in long format" do
1612
+ @cli.lists
1613
+ $stdout.string.should == <<-eos
1614
+ ID Created at Slug Members Subscribers Mode Description
1615
+ 21718825 Sep 14 2010 @sferik/code-for-america 26 5 public Code for America
1616
+ 8863586 Mar 15 2010 @sferik/presidents 2 1 public Presidents of the United States of America
1617
+ eos
1618
+ end
1619
+ end
1620
+ context "--members" do
1621
+ before do
1622
+ @cli.options = @cli.options.merge(:members => true)
1623
+ end
1624
+ it "should sort by the time when Twitter acount was created" do
1625
+ @cli.lists
1626
+ $stdout.string.rstrip.should == "@sferik/presidents @sferik/code-for-america"
1627
+ end
1628
+ end
1629
+ context "--mode" do
1630
+ before do
1631
+ @cli.options = @cli.options.merge(:mode => true)
1632
+ end
1633
+ it "should sort by the time when Twitter acount was created" do
1634
+ @cli.lists
1635
+ $stdout.string.rstrip.should == "@sferik/code-for-america @sferik/presidents"
1636
+ end
1637
+ end
1638
+ context "--posted" do
1639
+ before do
1640
+ @cli.options = @cli.options.merge(:posted => true)
1641
+ end
1642
+ it "should sort by the time when Twitter acount was created" do
1643
+ @cli.lists
1644
+ $stdout.string.rstrip.should == "@sferik/presidents @sferik/code-for-america"
1645
+ end
1646
+ end
1647
+ context "--reverse" do
1648
+ before do
1649
+ @cli.options = @cli.options.merge(:reverse => true)
1650
+ end
1651
+ it "should reverse the order of the sort" do
1652
+ @cli.lists
1653
+ $stdout.string.rstrip.should == "@sferik/presidents @sferik/code-for-america"
1654
+ end
1655
+ end
1656
+ context "--subscribers" do
1657
+ before do
1658
+ @cli.options = @cli.options.merge(:subscribers => true)
1659
+ end
1660
+ it "should sort by the time when Twitter acount was created" do
1661
+ @cli.lists
1662
+ $stdout.string.rstrip.should == "@sferik/presidents @sferik/code-for-america"
1663
+ end
1664
+ end
1665
+ context "--unsorted" do
1666
+ before do
1667
+ @cli.options = @cli.options.merge(:unsorted => true)
1668
+ end
1669
+ it "should not be sorted" do
1670
+ @cli.lists
1671
+ $stdout.string.rstrip.should == "@sferik/code-for-america @sferik/presidents"
1672
+ end
1673
+ end
1674
+ context "with a user passed" do
1675
+ before do
1676
+ stub_get("/1/lists.json").
1677
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1678
+ to_return(:body => fixture("lists.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1679
+ end
1680
+ it "should request the correct resource" do
1681
+ @cli.lists("sferik")
1682
+ a_get("/1/lists.json").
1683
+ with(:query => {:cursor => "-1", :screen_name => "sferik"}).
1684
+ should have_been_made
1685
+ end
1686
+ context "--id" do
1687
+ before do
1688
+ @cli.options = @cli.options.merge(:id => true)
1689
+ stub_get("/1/lists.json").
1690
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1691
+ to_return(:body => fixture("lists.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1692
+ end
1693
+ it "should request the correct resource" do
1694
+ @cli.lists("7505382")
1695
+ a_get("/1/lists.json").
1696
+ with(:query => {:cursor => "-1", :user_id => "7505382"}).
1697
+ should have_been_made
1698
+ end
1699
+ end
1700
+ end
1701
+ end
1702
+
1703
+ describe "#mentions" do
1704
+ before do
1705
+ stub_get("/1/statuses/mentions.json").
1706
+ with(:query => {:count => "20", :include_entities => "false"}).
1707
+ to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1708
+ end
1709
+ it "should request the correct resource" do
1710
+ @cli.mentions
1711
+ a_get("/1/statuses/mentions.json").
1712
+ with(:query => {:count => "20", :include_entities => "false"}).
1713
+ should have_been_made
1714
+ end
1715
+ it "should have the correct output" do
1716
+ @cli.mentions
1717
+ $stdout.string.should == <<-eos
975
1718
  natevillegas: RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present. (7 months ago)
976
1719
  TD: @kelseysilver how long will you be in town? (7 months ago)
977
1720
  rusashka: @maciej hahaha :) @gpena together we're going to cover all core 28 languages! (7 months ago)
@@ -991,11 +1734,39 @@ ID Since Tweets Favorites Listed Following Followers Screen
991
1734
  kelseysilver: San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw (7 months ago)
992
1735
  eos
993
1736
  end
1737
+ context "--csv" do
1738
+ before do
1739
+ @cli.options = @cli.options.merge(:csv => true)
1740
+ end
1741
+ it "should output in CSV format" do
1742
+ @cli.mentions
1743
+ $stdout.string.should == <<-eos
1744
+ ID,Posted at,Screen name,Text
1745
+ 194548121416630272,2011-04-23 22:07:41 +0000,natevillegas,RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present.
1746
+ 194547993607806976,2011-04-23 22:07:10 +0000,TD,@kelseysilver how long will you be in town?
1747
+ 194547987593183233,2011-04-23 22:07:09 +0000,rusashka,@maciej hahaha :) @gpena together we're going to cover all core 28 languages!
1748
+ 194547824690597888,2011-04-23 22:06:30 +0000,fat,@stevej @xc i'm going to picket when i get back.
1749
+ 194547658562605057,2011-04-23 22:05:51 +0000,wil,@0x9900 @paulnivin http://t.co/bwVdtAPe
1750
+ 194547528430137344,2011-04-23 22:05:19 +0000,wangtian,"@tianhonghe @xiangxin72 oh, you can even order specific items?"
1751
+ 194547402550689793,2011-04-23 22:04:49 +0000,shinypb,"@kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird"
1752
+ 194547260233760768,2011-04-23 22:04:16 +0000,0x9900,@wil @paulnivin if you want to take you seriously don't say daemontools!
1753
+ 194547084349804544,2011-04-23 22:03:34 +0000,kpk,@shinypb @skilldrick @hoverbird invented it
1754
+ 194546876782092291,2011-04-23 22:02:44 +0000,skilldrick,@shinypb Well played :) @hoverbird
1755
+ 194546811480969217,2011-04-23 22:02:29 +0000,sam,"Can someone project the date that I'll get a 27"" retina display?"
1756
+ 194546738810458112,2011-04-23 22:02:11 +0000,shinypb,"@skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain."
1757
+ 194546727670390784,2011-04-23 22:02:09 +0000,bartt,"@noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come."
1758
+ 194546649203347456,2011-04-23 22:01:50 +0000,skilldrick,"@hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all."
1759
+ 194546583608639488,2011-04-23 22:01:34 +0000,sean,@mep Thanks for coming by. Was great to have you.
1760
+ 194546388707717120,2011-04-23 22:00:48 +0000,hoverbird,"@shinypb @trammell it's all suck a ""duck blur"" sometimes."
1761
+ 194546264212385793,2011-04-23 22:00:18 +0000,kelseysilver,San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw
1762
+ eos
1763
+ end
1764
+ end
994
1765
  context "--long" do
995
1766
  before do
996
1767
  @cli.options = @cli.options.merge(:long => true)
997
1768
  end
998
- it "should list in long format" do
1769
+ it "should output in long format" do
999
1770
  @cli.mentions
1000
1771
  $stdout.string.should == <<-eos
1001
1772
  ID Posted at Screen name Text
@@ -1064,13 +1835,46 @@ ID Posted at Screen name Text
1064
1835
 
1065
1836
  describe "#open" do
1066
1837
  before do
1067
- @cli.options = @cli.options.merge(:dry_run => true)
1838
+ @cli.options = @cli.options.merge(:display_url => true)
1068
1839
  end
1069
- it "should not raise error" do
1840
+ it "should have the correct output" do
1070
1841
  lambda do
1071
1842
  @cli.open("sferik")
1072
1843
  end.should_not raise_error
1073
1844
  end
1845
+ context "--id" do
1846
+ before do
1847
+ @cli.options = @cli.options.merge(:id => true)
1848
+ stub_get("/1/users/show.json").
1849
+ with(:query => {:user_id => "420", :include_entities => "false"}).
1850
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1851
+ end
1852
+ it "should request the correct resource" do
1853
+ @cli.open("420")
1854
+ a_get("/1/users/show.json").
1855
+ with(:query => {:user_id => "420", :include_entities => "false"}).
1856
+ should have_been_made
1857
+ end
1858
+ end
1859
+ context "--status" do
1860
+ before do
1861
+ @cli.options = @cli.options.merge(:status => true)
1862
+ stub_get("/1/statuses/show/55709764298092545.json").
1863
+ with(:query => {:include_entities => "false", :include_my_retweet => "false"}).
1864
+ to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1865
+ end
1866
+ it "should request the correct resource" do
1867
+ @cli.open("55709764298092545")
1868
+ a_get("/1/statuses/show/55709764298092545.json").
1869
+ with(:query => {:include_entities => "false", :include_my_retweet => "false"}).
1870
+ should have_been_made
1871
+ end
1872
+ it "should have the correct output" do
1873
+ lambda do
1874
+ @cli.open("55709764298092545")
1875
+ end.should_not raise_error
1876
+ end
1877
+ end
1074
1878
  end
1075
1879
 
1076
1880
  describe "#reply" do
@@ -1104,6 +1908,28 @@ ID Posted at Screen name Text
1104
1908
  @cli.reply("55709764298092545", "Testing")
1105
1909
  $stdout.string.should =~ /^Reply created by @testcli to @sferik \(8 months ago\)\.$/
1106
1910
  end
1911
+ context "--all" do
1912
+ before do
1913
+ @cli.options = @cli.options.merge(:all => true)
1914
+ end
1915
+ it "should request the correct resource" do
1916
+ @cli.reply("55709764298092545", "Testing")
1917
+ a_get("/1/statuses/show/55709764298092545.json").
1918
+ with(:query => {:include_entities => "false", :include_my_retweet => "false"}).
1919
+ should have_been_made
1920
+ a_post("/1/statuses/update.json").
1921
+ with(:body => {:in_reply_to_status_id => "55709764298092545", :status => "@sferik Testing", :lat => "37.76969909668", :long => "-122.39330291748", :include_entities => "false", :trim_user => "true"}).
1922
+ should have_been_made
1923
+ a_request(:get, "http://checkip.dyndns.org/").
1924
+ should have_been_made
1925
+ a_request(:get, "http://www.geoplugin.net/xml.gp?ip=50.131.22.169").
1926
+ should have_been_made
1927
+ end
1928
+ it "should have the correct output" do
1929
+ @cli.reply("55709764298092545", "Testing")
1930
+ $stdout.string.should =~ /^Reply created by @testcli to @sferik \(8 months ago\)\.$/
1931
+ end
1932
+ end
1107
1933
  end
1108
1934
 
1109
1935
  describe "#report_spam" do
@@ -1123,6 +1949,20 @@ ID Posted at Screen name Text
1123
1949
  @cli.report_spam("sferik")
1124
1950
  $stdout.string.should =~ /^@testcli reported 1 user/
1125
1951
  end
1952
+ context "--id" do
1953
+ before do
1954
+ @cli.options = @cli.options.merge(:id => true)
1955
+ stub_post("/1/report_spam.json").
1956
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
1957
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1958
+ end
1959
+ it "should request the correct resource" do
1960
+ @cli.report_spam("7505382")
1961
+ a_post("/1/report_spam.json").
1962
+ with(:body => {:user_id => "7505382", :include_entities => "false"}).
1963
+ should have_been_made
1964
+ end
1965
+ end
1126
1966
  end
1127
1967
 
1128
1968
  describe "#retweet" do
@@ -1178,11 +2018,39 @@ ID Posted at Screen name Text
1178
2018
  eos
1179
2019
  end
1180
2020
  end
2021
+ context "--csv" do
2022
+ before do
2023
+ @cli.options = @cli.options.merge(:csv => true)
2024
+ end
2025
+ it "should output in CSV format" do
2026
+ @cli.retweets
2027
+ $stdout.string.should == <<-eos
2028
+ ID,Posted at,Screen name,Text
2029
+ 194548121416630272,2011-04-23 22:07:41 +0000,natevillegas,RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present.
2030
+ 194547993607806976,2011-04-23 22:07:10 +0000,TD,@kelseysilver how long will you be in town?
2031
+ 194547987593183233,2011-04-23 22:07:09 +0000,rusashka,@maciej hahaha :) @gpena together we're going to cover all core 28 languages!
2032
+ 194547824690597888,2011-04-23 22:06:30 +0000,fat,@stevej @xc i'm going to picket when i get back.
2033
+ 194547658562605057,2011-04-23 22:05:51 +0000,wil,@0x9900 @paulnivin http://t.co/bwVdtAPe
2034
+ 194547528430137344,2011-04-23 22:05:19 +0000,wangtian,"@tianhonghe @xiangxin72 oh, you can even order specific items?"
2035
+ 194547402550689793,2011-04-23 22:04:49 +0000,shinypb,"@kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird"
2036
+ 194547260233760768,2011-04-23 22:04:16 +0000,0x9900,@wil @paulnivin if you want to take you seriously don't say daemontools!
2037
+ 194547084349804544,2011-04-23 22:03:34 +0000,kpk,@shinypb @skilldrick @hoverbird invented it
2038
+ 194546876782092291,2011-04-23 22:02:44 +0000,skilldrick,@shinypb Well played :) @hoverbird
2039
+ 194546811480969217,2011-04-23 22:02:29 +0000,sam,"Can someone project the date that I'll get a 27"" retina display?"
2040
+ 194546738810458112,2011-04-23 22:02:11 +0000,shinypb,"@skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain."
2041
+ 194546727670390784,2011-04-23 22:02:09 +0000,bartt,"@noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come."
2042
+ 194546649203347456,2011-04-23 22:01:50 +0000,skilldrick,"@hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all."
2043
+ 194546583608639488,2011-04-23 22:01:34 +0000,sean,@mep Thanks for coming by. Was great to have you.
2044
+ 194546388707717120,2011-04-23 22:00:48 +0000,hoverbird,"@shinypb @trammell it's all suck a ""duck blur"" sometimes."
2045
+ 194546264212385793,2011-04-23 22:00:18 +0000,kelseysilver,San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw
2046
+ eos
2047
+ end
2048
+ end
1181
2049
  context "--long" do
1182
2050
  before do
1183
2051
  @cli.options = @cli.options.merge(:long => true)
1184
2052
  end
1185
- it "should list in long format" do
2053
+ it "should output in long format" do
1186
2054
  @cli.retweets
1187
2055
  $stdout.string.should == <<-eos
1188
2056
  ID Posted at Screen name Text
@@ -1247,7 +2115,7 @@ ID Posted at Screen name Text
1247
2115
  eos
1248
2116
  end
1249
2117
  end
1250
- context "with a screen name passed" do
2118
+ context "with a user passed" do
1251
2119
  before do
1252
2120
  stub_get("/1/statuses/retweeted_by_user.json").
1253
2121
  with(:query => {:count => "20", :include_entities => "false", :screen_name => "sferik"}).
@@ -1259,31 +2127,31 @@ ID Posted at Screen name Text
1259
2127
  with(:query => {:count => "20", :include_entities => "false", :screen_name => "sferik"}).
1260
2128
  should have_been_made
1261
2129
  end
1262
- it "should have the correct output" do
1263
- @cli.retweets("sferik")
1264
- $stdout.string.should == <<-eos
1265
- natevillegas: RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present. (7 months ago)
1266
- TD: @kelseysilver how long will you be in town? (7 months ago)
1267
- rusashka: @maciej hahaha :) @gpena together we're going to cover all core 28 languages! (7 months ago)
1268
- fat: @stevej @xc i'm going to picket when i get back. (7 months ago)
1269
- wil: @0x9900 @paulnivin http://t.co/bwVdtAPe (7 months ago)
1270
- wangtian: @tianhonghe @xiangxin72 oh, you can even order specific items? (7 months ago)
1271
- shinypb: @kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird (7 months ago)
1272
- 0x9900: @wil @paulnivin if you want to take you seriously don't say daemontools! (7 months ago)
1273
- kpk: @shinypb @skilldrick @hoverbird invented it (7 months ago)
1274
- skilldrick: @shinypb Well played :) @hoverbird (7 months ago)
1275
- sam: Can someone project the date that I'll get a 27" retina display? (7 months ago)
1276
- shinypb: @skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain. (7 months ago)
1277
- bartt: @noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come. (7 months ago)
1278
- skilldrick: @hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all. (7 months ago)
1279
- sean: @mep Thanks for coming by. Was great to have you. (7 months ago)
1280
- hoverbird: @shinypb @trammell it's all suck a "duck blur" sometimes. (7 months ago)
1281
- kelseysilver: San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw (7 months ago)
1282
- eos
2130
+ context "--id" do
2131
+ before do
2132
+ @cli.options = @cli.options.merge(:id => true)
2133
+ stub_get("/1/statuses/retweeted_by_user.json").
2134
+ with(:query => {:count => "20", :include_entities => "false", :user_id => "7505382"}).
2135
+ to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2136
+ end
2137
+ it "should request the correct resource" do
2138
+ @cli.retweets("7505382")
2139
+ a_get("/1/statuses/retweeted_by_user.json").
2140
+ with(:query => {:count => "20", :include_entities => "false", :user_id => "7505382"}).
2141
+ should have_been_made
2142
+ end
1283
2143
  end
1284
2144
  end
1285
2145
  end
1286
2146
 
2147
+ describe "#ruler" do
2148
+ it "should have the correct output" do
2149
+ @cli.ruler
2150
+ $stdout.string.chomp.size.should == 140
2151
+ $stdout.string.chomp.should == "----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|"
2152
+ end
2153
+ end
2154
+
1287
2155
  describe "#status" do
1288
2156
  before do
1289
2157
  stub_get("/1/statuses/show/55709764298092545.json").
@@ -1308,31 +2176,54 @@ Source Twitter for iPhone
1308
2176
  URL https://twitter.com/sferik/status/55709764298092545
1309
2177
  eos
1310
2178
  end
2179
+ context "--csv" do
2180
+ before do
2181
+ @cli.options = @cli.options.merge(:csv => true)
2182
+ end
2183
+ it "should have the correct output" do
2184
+ @cli.status("55709764298092545")
2185
+ $stdout.string.should == <<-eos
2186
+ ID,Text,Screen name,Posted at,Location,Retweets,Source,URL
2187
+ 55709764298092545,The problem with your code is that it's doing exactly what you told it to do.,sferik,2011-04-06 19:13:37 +0000,,320,Twitter for iPhone,https://twitter.com/sferik/status/55709764298092545
2188
+ eos
2189
+ end
2190
+ end
1311
2191
  end
1312
2192
 
1313
2193
  describe "#suggest" do
1314
2194
  before do
2195
+ stub_get("/1/account/verify_credentials.json").
2196
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1315
2197
  stub_get("/1/users/recommendations.json").
1316
- with(:query => {:limit => "20", :include_entities => "false"}).
2198
+ with(:query => {:limit => "20", :include_entities => "false", :screen_name => "sferik"}).
1317
2199
  to_return(:body => fixture("recommendations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1318
2200
  end
1319
2201
  it "should request the correct resource" do
1320
2202
  @cli.suggest
2203
+ stub_get("/1/account/verify_credentials.json").
2204
+ should have_been_made
1321
2205
  a_get("/1/users/recommendations.json").
1322
- with(:query => {:limit => "20", :include_entities => "false"}).
2206
+ with(:query => {:limit => "20", :include_entities => "false", :screen_name => "sferik"}).
1323
2207
  should have_been_made
1324
2208
  end
1325
2209
  it "should have the correct output" do
1326
2210
  @cli.suggest
1327
- $stdout.string.chomp.rstrip.should == "@antpires @jtrupiano @maccman @mlroach @stuntmann82"
2211
+ $stdout.string.rstrip.should == "@antpires @jtrupiano @maccman @mlroach @stuntmann82"
1328
2212
  end
1329
- context "--created" do
2213
+ context "--csv" do
1330
2214
  before do
1331
- @cli.options = @cli.options.merge(:created => true)
2215
+ @cli.options = @cli.options.merge(:csv => true)
1332
2216
  end
1333
- it "should sort by the time when Twitter acount was created" do
2217
+ it "should output in CSV format" do
1334
2218
  @cli.suggest
1335
- $stdout.string.chomp.rstrip.should == "@maccman @mlroach @jtrupiano @stuntmann82 @antpires"
2219
+ $stdout.string.should == <<-eos
2220
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
2221
+ 40514587,2009-05-16 18:24:33 +0000,183,2,2,198,158,antpires,AntonioPires
2222
+ 14736332,2008-05-11 19:46:06 +0000,3850,117,99,545,802,jtrupiano,John Trupiano
2223
+ 2006261,2007-03-23 12:36:14 +0000,4497,9,171,967,2028,maccman,Alex MacCaw
2224
+ 14451152,2008-04-20 12:05:38 +0000,6251,10,20,403,299,mlroach,Matt Laroche
2225
+ 16052754,2008-08-30 08:22:57 +0000,24,0,1,5,42,stuntmann82,stuntmann82
2226
+ eos
1336
2227
  end
1337
2228
  end
1338
2229
  context "--favorites" do
@@ -1341,7 +2232,7 @@ URL https://twitter.com/sferik/status/55709764298092545
1341
2232
  end
1342
2233
  it "should sort by number of favorites" do
1343
2234
  @cli.suggest
1344
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @antpires @maccman @mlroach @jtrupiano"
2235
+ $stdout.string.rstrip.should == "@stuntmann82 @antpires @maccman @mlroach @jtrupiano"
1345
2236
  end
1346
2237
  end
1347
2238
  context "--followers" do
@@ -1350,7 +2241,7 @@ URL https://twitter.com/sferik/status/55709764298092545
1350
2241
  end
1351
2242
  it "should sort by number of followers" do
1352
2243
  @cli.suggest
1353
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
2244
+ $stdout.string.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
1354
2245
  end
1355
2246
  end
1356
2247
  context "--friends" do
@@ -1359,7 +2250,7 @@ URL https://twitter.com/sferik/status/55709764298092545
1359
2250
  end
1360
2251
  it "should sort by number of friends" do
1361
2252
  @cli.suggest
1362
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
2253
+ $stdout.string.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
1363
2254
  end
1364
2255
  end
1365
2256
  context "--listed" do
@@ -1368,14 +2259,14 @@ URL https://twitter.com/sferik/status/55709764298092545
1368
2259
  end
1369
2260
  it "should sort by number of list memberships" do
1370
2261
  @cli.suggest
1371
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
2262
+ $stdout.string.rstrip.should == "@stuntmann82 @antpires @mlroach @jtrupiano @maccman"
1372
2263
  end
1373
2264
  end
1374
2265
  context "--long" do
1375
2266
  before do
1376
2267
  @cli.options = @cli.options.merge(:long => true)
1377
2268
  end
1378
- it "should list in long format" do
2269
+ it "should output in long format" do
1379
2270
  @cli.suggest
1380
2271
  $stdout.string.should == <<-eos
1381
2272
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -1391,23 +2282,32 @@ ID Since Tweets Favorites Listed Following Followers Screen
1391
2282
  before do
1392
2283
  @cli.options = @cli.options.merge(:number => 1)
1393
2284
  stub_get("/1/users/recommendations.json").
1394
- with(:query => {:limit => "1", :include_entities => "false"}).
2285
+ with(:query => {:limit => "1", :include_entities => "false", :screen_name => "sferik"}).
1395
2286
  to_return(:body => fixture("recommendations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
1396
2287
  end
1397
2288
  it "should limit the number of results" do
1398
2289
  @cli.suggest
1399
2290
  a_get("/1/users/recommendations.json").
1400
- with(:query => {:limit => "1", :include_entities => "false"}).
2291
+ with(:query => {:limit => "1", :include_entities => "false", :screen_name => "sferik"}).
1401
2292
  should have_been_made
1402
2293
  end
1403
2294
  end
2295
+ context "--posted" do
2296
+ before do
2297
+ @cli.options = @cli.options.merge(:posted => true)
2298
+ end
2299
+ it "should sort by the time when Twitter acount was created" do
2300
+ @cli.suggest
2301
+ $stdout.string.rstrip.should == "@maccman @mlroach @jtrupiano @stuntmann82 @antpires"
2302
+ end
2303
+ end
1404
2304
  context "--reverse" do
1405
2305
  before do
1406
2306
  @cli.options = @cli.options.merge(:reverse => true)
1407
2307
  end
1408
2308
  it "should reverse the order of the sort" do
1409
2309
  @cli.suggest
1410
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @mlroach @maccman @jtrupiano @antpires"
2310
+ $stdout.string.rstrip.should == "@stuntmann82 @mlroach @maccman @jtrupiano @antpires"
1411
2311
  end
1412
2312
  end
1413
2313
  context "--tweets" do
@@ -1416,7 +2316,42 @@ ID Since Tweets Favorites Listed Following Followers Screen
1416
2316
  end
1417
2317
  it "should sort by number of Tweets" do
1418
2318
  @cli.suggest
1419
- $stdout.string.chomp.rstrip.should == "@stuntmann82 @antpires @jtrupiano @maccman @mlroach"
2319
+ $stdout.string.rstrip.should == "@stuntmann82 @antpires @jtrupiano @maccman @mlroach"
2320
+ end
2321
+ end
2322
+ context "--unsorted" do
2323
+ before do
2324
+ @cli.options = @cli.options.merge(:unsorted => true)
2325
+ end
2326
+ it "should not be sorted" do
2327
+ @cli.suggest
2328
+ $stdout.string.rstrip.should == "@jtrupiano @mlroach @antpires @maccman @stuntmann82"
2329
+ end
2330
+ end
2331
+ context "with a user passed" do
2332
+ it "should request the correct resource" do
2333
+ @cli.suggest("sferik")
2334
+ a_get("/1/users/recommendations.json").
2335
+ with(:query => {:limit => "20", :include_entities => "false", :screen_name => "sferik"}).
2336
+ should have_been_made
2337
+ end
2338
+ it "should have the correct output" do
2339
+ @cli.suggest("sferik")
2340
+ $stdout.string.rstrip.should == "@antpires @jtrupiano @maccman @mlroach @stuntmann82"
2341
+ end
2342
+ context "--id" do
2343
+ before do
2344
+ @cli.options = @cli.options.merge(:id => true)
2345
+ stub_get("/1/users/recommendations.json").
2346
+ with(:query => {:limit => "20", :include_entities => "false", :user_id => "7505382"}).
2347
+ to_return(:body => fixture("recommendations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2348
+ end
2349
+ it "should request the correct resource" do
2350
+ @cli.suggest("7505382")
2351
+ a_get("/1/users/recommendations.json").
2352
+ with(:query => {:limit => "20", :include_entities => "false", :user_id => "7505382"}).
2353
+ should have_been_made
2354
+ end
1420
2355
  end
1421
2356
  end
1422
2357
  end
@@ -1457,11 +2392,39 @@ ID Since Tweets Favorites Listed Following Followers Screen
1457
2392
  eos
1458
2393
  end
1459
2394
  end
2395
+ context "--csv" do
2396
+ before do
2397
+ @cli.options = @cli.options.merge(:csv => true)
2398
+ end
2399
+ it "should output in CSV format" do
2400
+ @cli.timeline
2401
+ $stdout.string.should == <<-eos
2402
+ ID,Posted at,Screen name,Text
2403
+ 194548121416630272,2011-04-23 22:07:41 +0000,natevillegas,RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present.
2404
+ 194547993607806976,2011-04-23 22:07:10 +0000,TD,@kelseysilver how long will you be in town?
2405
+ 194547987593183233,2011-04-23 22:07:09 +0000,rusashka,@maciej hahaha :) @gpena together we're going to cover all core 28 languages!
2406
+ 194547824690597888,2011-04-23 22:06:30 +0000,fat,@stevej @xc i'm going to picket when i get back.
2407
+ 194547658562605057,2011-04-23 22:05:51 +0000,wil,@0x9900 @paulnivin http://t.co/bwVdtAPe
2408
+ 194547528430137344,2011-04-23 22:05:19 +0000,wangtian,"@tianhonghe @xiangxin72 oh, you can even order specific items?"
2409
+ 194547402550689793,2011-04-23 22:04:49 +0000,shinypb,"@kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird"
2410
+ 194547260233760768,2011-04-23 22:04:16 +0000,0x9900,@wil @paulnivin if you want to take you seriously don't say daemontools!
2411
+ 194547084349804544,2011-04-23 22:03:34 +0000,kpk,@shinypb @skilldrick @hoverbird invented it
2412
+ 194546876782092291,2011-04-23 22:02:44 +0000,skilldrick,@shinypb Well played :) @hoverbird
2413
+ 194546811480969217,2011-04-23 22:02:29 +0000,sam,"Can someone project the date that I'll get a 27"" retina display?"
2414
+ 194546738810458112,2011-04-23 22:02:11 +0000,shinypb,"@skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain."
2415
+ 194546727670390784,2011-04-23 22:02:09 +0000,bartt,"@noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come."
2416
+ 194546649203347456,2011-04-23 22:01:50 +0000,skilldrick,"@hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all."
2417
+ 194546583608639488,2011-04-23 22:01:34 +0000,sean,@mep Thanks for coming by. Was great to have you.
2418
+ 194546388707717120,2011-04-23 22:00:48 +0000,hoverbird,"@shinypb @trammell it's all suck a ""duck blur"" sometimes."
2419
+ 194546264212385793,2011-04-23 22:00:18 +0000,kelseysilver,San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw
2420
+ eos
2421
+ end
2422
+ end
1460
2423
  context "--long" do
1461
2424
  before do
1462
2425
  @cli.options = @cli.options.merge(:long => true)
1463
2426
  end
1464
- it "should list in long format" do
2427
+ it "should output in long format" do
1465
2428
  @cli.timeline
1466
2429
  $stdout.string.should == <<-eos
1467
2430
  ID Posted at Screen name Text
@@ -1526,7 +2489,7 @@ ID Posted at Screen name Text
1526
2489
  eos
1527
2490
  end
1528
2491
  end
1529
- context "with user" do
2492
+ context "with a user passed" do
1530
2493
  before do
1531
2494
  stub_get("/1/statuses/user_timeline.json").
1532
2495
  with(:query => {:count => "20", :include_entities => "false", :screen_name => "sferik"}).
@@ -1538,42 +2501,142 @@ ID Posted at Screen name Text
1538
2501
  with(:query => {:count => "20", :include_entities => "false", :screen_name => "sferik"}).
1539
2502
  should have_been_made
1540
2503
  end
2504
+ context "--id" do
2505
+ before do
2506
+ @cli.options = @cli.options.merge(:id => true)
2507
+ stub_get("/1/statuses/user_timeline.json").
2508
+ with(:query => {:count => "20", :include_entities => "false", :user_id => "7505382"}).
2509
+ to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2510
+ end
2511
+ it "should request the correct resource" do
2512
+ @cli.timeline("7505382")
2513
+ a_get("/1/statuses/user_timeline.json").
2514
+ with(:query => {:count => "20", :include_entities => "false", :user_id => "7505382"}).
2515
+ should have_been_made
2516
+ end
2517
+ end
2518
+ end
2519
+ end
2520
+
2521
+ describe "#trends" do
2522
+ before do
2523
+ stub_get("/1/trends/1.json").
2524
+ to_return(:body => fixture("trends.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2525
+ end
2526
+ it "should request the correct resource" do
2527
+ @cli.trends
2528
+ a_get("/1/trends/1.json").
2529
+ should have_been_made
2530
+ end
2531
+ it "should have the correct output" do
2532
+ @cli.trends
2533
+ $stdout.string.rstrip.should == "#sevenwordsaftersex Walkman Allen Iverson"
2534
+ end
2535
+ context "--exclude_hashtags" do
2536
+ before do
2537
+ @cli.options = @cli.options.merge(:exclude_hashtags => true)
2538
+ stub_get("/1/trends/1.json").
2539
+ with(:query => {:exclude => "hashtags"}).
2540
+ to_return(:body => fixture("trends.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2541
+ end
2542
+ it "should request the correct resource" do
2543
+ @cli.trends
2544
+ a_get("/1/trends/1.json").
2545
+ with(:query => {:exclude => "hashtags"}).
2546
+ should have_been_made
2547
+ end
1541
2548
  it "should have the correct output" do
1542
- @cli.timeline("sferik")
1543
- $stdout.string.should == <<-eos
1544
- natevillegas: RT @gelobautista #riordan RT @WilI_Smith: Yesterday is history. Tomorrow is a mystery. Today is a gift. That's why it's called the present. (7 months ago)
1545
- TD: @kelseysilver how long will you be in town? (7 months ago)
1546
- rusashka: @maciej hahaha :) @gpena together we're going to cover all core 28 languages! (7 months ago)
1547
- fat: @stevej @xc i'm going to picket when i get back. (7 months ago)
1548
- wil: @0x9900 @paulnivin http://t.co/bwVdtAPe (7 months ago)
1549
- wangtian: @tianhonghe @xiangxin72 oh, you can even order specific items? (7 months ago)
1550
- shinypb: @kpk Pfft, I think you're forgetting mechanical television, which depended on a clever German. http://t.co/JvLNQCDm @skilldrick @hoverbird (7 months ago)
1551
- 0x9900: @wil @paulnivin if you want to take you seriously don't say daemontools! (7 months ago)
1552
- kpk: @shinypb @skilldrick @hoverbird invented it (7 months ago)
1553
- skilldrick: @shinypb Well played :) @hoverbird (7 months ago)
1554
- sam: Can someone project the date that I'll get a 27" retina display? (7 months ago)
1555
- shinypb: @skilldrick @hoverbird Wow, I didn't even know they *had* TV in Britain. (7 months ago)
1556
- bartt: @noahlt @gaarf Yup, now owning @twitter -&gt; FB from FE to daemons. Lot’s of fun. Expect improvements in the weeks to come. (7 months ago)
1557
- skilldrick: @hoverbird @shinypb You guys must be soooo old, I don't remember the words to the duck tales intro at all. (7 months ago)
1558
- sean: @mep Thanks for coming by. Was great to have you. (7 months ago)
1559
- hoverbird: @shinypb @trammell it's all suck a "duck blur" sometimes. (7 months ago)
1560
- kelseysilver: San Francisco here I come! (@ Newark Liberty International Airport (EWR) w/ 92 others) http://t.co/eoLANJZw (7 months ago)
2549
+ @cli.trends
2550
+ $stdout.string.rstrip.should == "#sevenwordsaftersex Walkman Allen Iverson"
2551
+ end
2552
+ end
2553
+ context "with a WOEID passed" do
2554
+ before do
2555
+ stub_get("/1/trends/2487956.json").
2556
+ to_return(:body => fixture("trends.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2557
+ end
2558
+ it "should request the correct resource" do
2559
+ @cli.trends("2487956")
2560
+ a_get("/1/trends/2487956.json").
2561
+ should have_been_made
2562
+ end
2563
+ it "should have the correct output" do
2564
+ @cli.trends("2487956")
2565
+ $stdout.string.rstrip.should == "#sevenwordsaftersex Walkman Allen Iverson"
2566
+ end
2567
+ end
2568
+ end
2569
+
2570
+ describe "#trend_locations" do
2571
+ before do
2572
+ stub_get("/1/trends/available.json").
2573
+ to_return(:body => fixture("locations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2574
+ end
2575
+ it "should request the correct resource" do
2576
+ @cli.trend_locations
2577
+ a_get("/1/trends/available.json").
2578
+ should have_been_made
2579
+ end
2580
+ it "should have the correct output" do
2581
+ @cli.trend_locations
2582
+ $stdout.string.rstrip.should == "Boston New York San Francisco United States Worldwide"
2583
+ end
2584
+ context "--csv" do
2585
+ before do
2586
+ @cli.options = @cli.options.merge(:csv => true)
2587
+ end
2588
+ it "should output in CSV format" do
2589
+ @cli.trend_locations
2590
+ $stdout.string.rstrip.should == <<-eos.rstrip
2591
+ WOEID,Parent ID,Type,Name,Country
2592
+ 2367105,,Town,Boston,United States
2593
+ 2459115,,Town,New York,United States
2594
+ 2487956,,Town,San Francisco,United States
2595
+ 23424977,,Country,United States,United States
2596
+ 1,,Supername,Worldwide,""
1561
2597
  eos
1562
2598
  end
1563
2599
  end
2600
+ context "--long" do
2601
+ before do
2602
+ @cli.options = @cli.options.merge(:long => true)
2603
+ end
2604
+ it "should output in long format" do
2605
+ @cli.trend_locations
2606
+ $stdout.string.rstrip.should == <<-eos.rstrip
2607
+ WOEID Parent ID Type Name Country
2608
+ 2367105 Town Boston United States
2609
+ 2459115 Town New York United States
2610
+ 2487956 Town San Francisco United States
2611
+ 23424977 Country United States United States
2612
+ 1 Supername Worldwide
2613
+ eos
2614
+ end
2615
+ end
2616
+ context "--reverse" do
2617
+ before do
2618
+ @cli.options = @cli.options.merge(:reverse => true)
2619
+ end
2620
+ it "should reverse the order of the sort" do
2621
+ @cli.trend_locations
2622
+ $stdout.string.rstrip.should == "Worldwide United States San Francisco New York Boston"
2623
+ end
2624
+ end
2625
+ context "--unsorted" do
2626
+ before do
2627
+ @cli.options = @cli.options.merge(:unsorted => true)
2628
+ end
2629
+ it "should not be sorted" do
2630
+ @cli.trend_locations
2631
+ $stdout.string.rstrip.should == "Boston Worldwide New York United States San Francisco"
2632
+ end
2633
+ end
1564
2634
  end
1565
2635
 
1566
2636
  describe "#unfollow" do
1567
2637
  before do
1568
2638
  @cli.options = @cli.options.merge(:profile => fixture_path + "/.trc")
1569
2639
  end
1570
- context "no users" do
1571
- it "should exit" do
1572
- lambda do
1573
- @cli.unfollow
1574
- end.should raise_error
1575
- end
1576
- end
1577
2640
  context "one user" do
1578
2641
  it "should request the correct resource" do
1579
2642
  stub_delete("/1/friendships/destroy.json").
@@ -1591,6 +2654,20 @@ ID Posted at Screen name Text
1591
2654
  @cli.unfollow("sferik")
1592
2655
  $stdout.string.should =~ /^@testcli is no longer following 1 user\.$/
1593
2656
  end
2657
+ context "--id" do
2658
+ before do
2659
+ @cli.options = @cli.options.merge(:id => true)
2660
+ stub_delete("/1/friendships/destroy.json").
2661
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
2662
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2663
+ end
2664
+ it "should request the correct resource" do
2665
+ @cli.unfollow("7505382")
2666
+ a_delete("/1/friendships/destroy.json").
2667
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
2668
+ should have_been_made
2669
+ end
2670
+ end
1594
2671
  context "Twitter is down" do
1595
2672
  it "should retry 3 times and then raise an error" do
1596
2673
  stub_delete("/1/friendships/destroy.json").
@@ -1648,15 +2725,19 @@ ID Posted at Screen name Text
1648
2725
  end
1649
2726
  it "should have the correct output" do
1650
2727
  @cli.users("sferik", "pengwynn")
1651
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
2728
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
1652
2729
  end
1653
- context "--created" do
2730
+ context "--csv" do
1654
2731
  before do
1655
- @cli.options = @cli.options.merge(:created => true)
2732
+ @cli.options = @cli.options.merge(:csv => true)
1656
2733
  end
1657
- it "should sort by the time when Twitter acount was created" do
2734
+ it "should output in CSV format" do
1658
2735
  @cli.users("sferik", "pengwynn")
1659
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2736
+ $stdout.string.should == <<-eos
2737
+ ID,Since,Tweets,Favorites,Listed,Following,Followers,Screen name,Name
2738
+ 14100886,2008-03-08 16:34:22 +0000,3913,32,185,1871,2767,pengwynn,Wynn Netherland
2739
+ 7505382,2007-07-16 12:59:01 +0000,2962,727,29,88,898,sferik,Erik Michaels-Ober
2740
+ eos
1660
2741
  end
1661
2742
  end
1662
2743
  context "--favorites" do
@@ -1665,7 +2746,7 @@ ID Posted at Screen name Text
1665
2746
  end
1666
2747
  it "should sort by number of favorites" do
1667
2748
  @cli.users("sferik", "pengwynn")
1668
- $stdout.string.chomp.rstrip.should == "@pengwynn @sferik"
2749
+ $stdout.string.rstrip.should == "@pengwynn @sferik"
1669
2750
  end
1670
2751
  end
1671
2752
  context "--followers" do
@@ -1674,7 +2755,7 @@ ID Posted at Screen name Text
1674
2755
  end
1675
2756
  it "should sort by number of followers" do
1676
2757
  @cli.users("sferik", "pengwynn")
1677
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2758
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1678
2759
  end
1679
2760
  end
1680
2761
  context "--friends" do
@@ -1683,7 +2764,21 @@ ID Posted at Screen name Text
1683
2764
  end
1684
2765
  it "should sort by number of friends" do
1685
2766
  @cli.users("sferik", "pengwynn")
1686
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2767
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
2768
+ end
2769
+ end
2770
+ context "--id" do
2771
+ before do
2772
+ @cli.options = @cli.options.merge(:id => true)
2773
+ stub_get("/1/users/lookup.json").
2774
+ with(:query => {:user_id => "7505382,14100886", :include_entities => "false"}).
2775
+ to_return(:body => fixture("users.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2776
+ end
2777
+ it "should request the correct resource" do
2778
+ @cli.users("7505382", "14100886")
2779
+ a_get("/1/users/lookup.json").
2780
+ with(:query => {:user_id => "7505382,14100886", :include_entities => "false"}).
2781
+ should have_been_made
1687
2782
  end
1688
2783
  end
1689
2784
  context "--listed" do
@@ -1692,14 +2787,14 @@ ID Posted at Screen name Text
1692
2787
  end
1693
2788
  it "should sort by number of list memberships" do
1694
2789
  @cli.users("sferik", "pengwynn")
1695
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2790
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1696
2791
  end
1697
2792
  end
1698
2793
  context "--long" do
1699
2794
  before do
1700
2795
  @cli.options = @cli.options.merge(:long => true)
1701
2796
  end
1702
- it "should list in long format" do
2797
+ it "should output in long format" do
1703
2798
  @cli.users("sferik", "pengwynn")
1704
2799
  $stdout.string.should == <<-eos
1705
2800
  ID Since Tweets Favorites Listed Following Followers Screen name Name
@@ -1708,13 +2803,22 @@ ID Since Tweets Favorites Listed Following Followers Screen
1708
2803
  eos
1709
2804
  end
1710
2805
  end
2806
+ context "--posted" do
2807
+ before do
2808
+ @cli.options = @cli.options.merge(:posted => true)
2809
+ end
2810
+ it "should sort by the time when Twitter acount was created" do
2811
+ @cli.users("sferik", "pengwynn")
2812
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
2813
+ end
2814
+ end
1711
2815
  context "--reverse" do
1712
2816
  before do
1713
2817
  @cli.options = @cli.options.merge(:reverse => true)
1714
2818
  end
1715
2819
  it "should reverse the order of the sort" do
1716
2820
  @cli.users("sferik", "pengwynn")
1717
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2821
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1718
2822
  end
1719
2823
  end
1720
2824
  context "--tweets" do
@@ -1723,7 +2827,16 @@ ID Since Tweets Favorites Listed Following Followers Screen
1723
2827
  end
1724
2828
  it "should sort by number of Tweets" do
1725
2829
  @cli.users("sferik", "pengwynn")
1726
- $stdout.string.chomp.rstrip.should == "@sferik @pengwynn"
2830
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
2831
+ end
2832
+ end
2833
+ context "--unsorted" do
2834
+ before do
2835
+ @cli.options = @cli.options.merge(:unsorted => true)
2836
+ end
2837
+ it "should not be sorted" do
2838
+ @cli.users("sferik", "pengwynn")
2839
+ $stdout.string.rstrip.should == "@sferik @pengwynn"
1727
2840
  end
1728
2841
  end
1729
2842
  end
@@ -1754,7 +2867,6 @@ ID 7505382
1754
2867
  Name Erik Michaels-Ober
1755
2868
  Bio A mind forever voyaging through strange seas of thought, alone.
1756
2869
  Location San Francisco
1757
- URL https://github.com/sferik
1758
2870
  Status Not following
1759
2871
  Last update RT @tenderlove: [ANN] sqlite3-ruby =&gt; sqlite3 (10 months ago)
1760
2872
  Since Jul 16 2007
@@ -1763,8 +2875,35 @@ Favorites 1,040
1763
2875
  Listed 41
1764
2876
  Following 197
1765
2877
  Followers 1,048
2878
+ URL https://github.com/sferik
1766
2879
  eos
1767
2880
  end
2881
+ context "--csv" do
2882
+ before do
2883
+ @cli.options = @cli.options.merge(:csv => true)
2884
+ end
2885
+ it "should have the correct output" do
2886
+ @cli.whois("sferik")
2887
+ $stdout.string.should == <<-eos
2888
+ ID,Verified,Name,Screen name,Bio,Location,Following,Last update,Lasted updated at,Since,Tweets,Favorites,Listed,Following,Followers,URL
2889
+ 7505382,false,Erik Michaels-Ober,sferik,"A mind forever voyaging through strange seas of thought, alone.",San Francisco,false,RT @tenderlove: [ANN] sqlite3-ruby =&gt; sqlite3,2011-01-16 21:38:25 +0000,2007-07-16 12:59:01 +0000,3479,1040,41,197,1048,https://github.com/sferik
2890
+ eos
2891
+ end
2892
+ end
2893
+ context "--id" do
2894
+ before do
2895
+ @cli.options = @cli.options.merge(:id => true)
2896
+ stub_get("/1/users/show.json").
2897
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
2898
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
2899
+ end
2900
+ it "should request the correct resource" do
2901
+ @cli.whois("7505382")
2902
+ a_get("/1/users/show.json").
2903
+ with(:query => {:user_id => "7505382", :include_entities => "false"}).
2904
+ should have_been_made
2905
+ end
2906
+ end
1768
2907
  end
1769
2908
 
1770
2909
  end