Fixed some sanity test logic run before releasing.
[twitter4r-core.git] / scripts / testsanity.rb
blobb12656e92d6cebead26b59ccebdd887b5b978d86
1 #!/usr/bin/env ruby
3 require('rubygems')
4 require('twitter')
5 require('twitter/console')
7 version = Twitter::Version.to_version
8 puts "Sanity testing #{version}"
9 config_file = File.join(File.dirname(__FILE__), '..', 'config', 'twitter.yml')
10 twitter = Twitter::Client.from_config(config_file, 'twitter4r')
12 def expect(n, m, message = 'A potential error')
13         puts "WARNING: #{message}:\n\t => #{m} instead of #{n}" unless n.eql?(m)
14 end
16 puts "Public timeline sanity check"
17 timeline = twitter.timeline_for(:public, :include_rts => 1)
18 count = timeline.size
19 expect 20, count, "Retrieved the last #{count} statuses from the public timeline"
21 sleep(2)
22 puts "Friends timeline sanity check"
23 timeline = twitter.timeline_for(:friends, :include_rts => 1)
24 count = timeline.size
25 expect 20, count, "Retrieved the last #{count} statuses from all my friends' timeline"
27 sleep(2)
28 puts "User timeline sanity check"
29 timeline = twitter.timeline_for(:user, :id => 'mbbx6spp', :count => 5, :include_rts => 1)
30 count = timeline.size
31 expect 5, count, "Retrieved the last #{count} statuses from one friend"
33 sleep(2)
34 puts "User lookup sanity check"
35 screen_name = 'mbbx6spp'
36 user = twitter.user(screen_name, :info)
37 expect screen_name, user.screen_name, 'Retrieved a different user'
39 sleep(2)
40 puts "User#friends sanity check"
41 friends = twitter.user(screen_name, :friends)
42 expect Array, friends.class, 
43         'Did not retrieve an Array of users for #user(..., :friends)'
45 sleep(2)
46 puts "My user info sanity check"
47 followers = twitter.my(:info).followers
48 expect Array, followers.class, 
49         'Did not retrieve an Array of users for #my(:followers)'
51 sleep(2)
52 puts "Status posting sanity check"
53 posted_status = twitter.status(:post, "Testing Twitter4R v#{version} - http://twitter4r.rubyforge.org")
54 timeline = twitter.timeline_for(:me, :count => 1)
55 expect Twitter::Status, posted_status.class, 'Did not return newly posted status'
56 expect 1, timeline.size, 'Did not retrieve only last status'
57 expect Array, timeline.class, 'Did not retrieve an Array'
58 expect timeline[0], posted_status, 'Did not successfully post new status'
60 sleep(2)
61 puts "Status retrieval sanity check"
62 status = twitter.status(:get, posted_status)
63 expect posted_status, status, 'Did not get proper status'
65 sleep(2)
66 puts "Status deletion sanity check"
67 deleted_status = twitter.status(:delete, posted_status)
68 expect posted_status.id, deleted_status.id, 'Did not delete same status'
70 sleep(2)
71 puts "Direct messaging sanity check"
72 text = 'This is a test direct message for sanity test script purposes'
73 message = twitter.message(:post, text, user)
74 expect text, message.text, 
75         'Did not post expected text'
76 expect user.screen_name, message.recipient.screen_name, 
77         'Did not post to expected recipient'
79 sleep(2)
80 puts "Favorites sanity check"
81 favorites = twitter.favorites
82 expect 0, favorites.size, 'Did not receive expected number of favorites'
84 sleep(2)
85 puts "Add favorite sanity check"
86 status_id = 381975342
87 status = twitter.favorite(:add, status_id)
88 favorites = twitter.favorites
89 expect 1, favorites.size, 'Did not add favorite'
90 expect status_id, status.id, 'Did not add correct favorite'
92 sleep(2)
93 puts "Remove favorite sanity check"
94 status = twitter.favorite(:remove, status_id)
95 favorites = twitter.favorites
96 expect 0, favorites.size, 'Did not remove favorite'
97 expect status_id, status.id, 'Did not remove correct favorite'