798 lines
38 KiB
Ruby
798 lines
38 KiB
Ruby
require 'helper'
|
|
|
|
describe Twitter::REST::Users do
|
|
|
|
before do
|
|
@client = Twitter::REST::Client.new(:consumer_key => 'CK', :consumer_secret => 'CS', :access_token => 'AT', :access_token_secret => 'AS')
|
|
end
|
|
|
|
describe '#settings' do
|
|
before do
|
|
stub_get('/1.1/account/settings.json').to_return(:body => fixture('settings.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_post('/1.1/account/settings.json').with(:body => {:trend_location_woeid => '23424803'}).to_return(:body => fixture('settings.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource on GET' do
|
|
@client.settings
|
|
expect(a_get('/1.1/account/settings.json')).to have_been_made
|
|
end
|
|
it 'returns settings' do
|
|
settings = @client.settings
|
|
expect(settings).to be_a Twitter::Settings
|
|
expect(settings.language).to eq('en')
|
|
end
|
|
it 'requests the correct resource on POST' do
|
|
@client.settings(:trend_location_woeid => '23424803')
|
|
expect(a_post('/1.1/account/settings.json').with(:body => {:trend_location_woeid => '23424803'})).to have_been_made
|
|
end
|
|
it 'returns settings' do
|
|
settings = @client.settings(:trend_location_woeid => '23424803')
|
|
expect(settings).to be_a Twitter::Settings
|
|
expect(settings.language).to eq('en')
|
|
end
|
|
end
|
|
|
|
describe '#verify_credentials' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.verify_credentials
|
|
expect(a_get('/1.1/account/verify_credentials.json')).to have_been_made
|
|
end
|
|
it 'returns the requesting user' do
|
|
user = @client.verify_credentials
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#update_delivery_device' do
|
|
before do
|
|
stub_post('/1.1/account/update_delivery_device.json').with(:body => {:device => 'sms'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_delivery_device('sms')
|
|
expect(a_post('/1.1/account/update_delivery_device.json').with(:body => {:device => 'sms'})).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
user = @client.update_delivery_device('sms')
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#update_profile' do
|
|
before do
|
|
stub_post('/1.1/account/update_profile.json').with(:body => {:url => 'http://github.com/sferik/'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_profile(:url => 'http://github.com/sferik/')
|
|
expect(a_post('/1.1/account/update_profile.json').with(:body => {:url => 'http://github.com/sferik/'})).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
user = @client.update_profile(:url => 'http://github.com/sferik/')
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#update_profile_background_image' do
|
|
before do
|
|
stub_post('/1.1/account/update_profile_background_image.json').to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_profile_background_image(fixture('we_concept_bg2.png'))
|
|
expect(a_post('/1.1/account/update_profile_background_image.json')).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
user = @client.update_profile_background_image(fixture('we_concept_bg2.png'))
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#update_profile_colors' do
|
|
before do
|
|
stub_post('/1.1/account/update_profile_colors.json').with(:body => {:profile_background_color => '000000'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_profile_colors(:profile_background_color => '000000')
|
|
expect(a_post('/1.1/account/update_profile_colors.json').with(:body => {:profile_background_color => '000000'})).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
user = @client.update_profile_colors(:profile_background_color => '000000')
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#update_profile_image' do
|
|
before do
|
|
stub_post('/1.1/account/update_profile_image.json').to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_profile_image(fixture('me.jpeg'))
|
|
expect(a_post('/1.1/account/update_profile_image.json')).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
user = @client.update_profile_image(fixture('me.jpeg'))
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#suggestions' do
|
|
context 'with a category slug passed' do
|
|
before do
|
|
stub_get('/1.1/users/suggestions/art-design.json').to_return(:body => fixture('category.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.suggestions('art-design')
|
|
expect(a_get('/1.1/users/suggestions/art-design.json')).to have_been_made
|
|
end
|
|
it 'returns the users in a given category of the Twitter suggested user list' do
|
|
suggestion = @client.suggestions('art-design')
|
|
expect(suggestion).to be_a Twitter::Suggestion
|
|
expect(suggestion.name).to eq('Art & Design')
|
|
expect(suggestion.users).to be_an Array
|
|
expect(suggestion.users.first).to be_a Twitter::User
|
|
end
|
|
end
|
|
context 'without arguments passed' do
|
|
before do
|
|
stub_get('/1.1/users/suggestions.json').to_return(:body => fixture('suggestions.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.suggestions
|
|
expect(a_get('/1.1/users/suggestions.json')).to have_been_made
|
|
end
|
|
it 'returns the list of suggested user categories' do
|
|
suggestions = @client.suggestions
|
|
expect(suggestions).to be_an Array
|
|
expect(suggestions.first).to be_a Twitter::Suggestion
|
|
expect(suggestions.first.name).to eq('Art & Design')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#suggest_users' do
|
|
before do
|
|
stub_get('/1.1/users/suggestions/art-design/members.json').to_return(:body => fixture('members.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.suggest_users('art-design')
|
|
expect(a_get('/1.1/users/suggestions/art-design/members.json')).to have_been_made
|
|
end
|
|
it 'returns users in a given category of the Twitter suggested user list and return their most recent status if they are not a protected user' do
|
|
suggest_users = @client.suggest_users('art-design')
|
|
expect(suggest_users).to be_an Array
|
|
expect(suggest_users.first).to be_a Twitter::User
|
|
expect(suggest_users.first.id).to eq(13)
|
|
end
|
|
end
|
|
|
|
describe '#blocked' do
|
|
before do
|
|
stub_get('/1.1/blocks/list.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('users_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.blocked
|
|
expect(a_get('/1.1/blocks/list.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
end
|
|
it 'returns an array of user objects that the authenticating user is blocking' do
|
|
blocked = @client.blocked
|
|
expect(blocked).to be_a Twitter::Cursor
|
|
expect(blocked.first).to be_a Twitter::User
|
|
expect(blocked.first.id).to eq(7_505_382)
|
|
end
|
|
context 'with each' do
|
|
before do
|
|
stub_get('/1.1/blocks/list.json').with(:query => {:cursor => '1322801608223717003'}).to_return(:body => fixture('users_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.blocked.each {}
|
|
expect(a_get('/1.1/blocks/list.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/blocks/list.json').with(:query => {:cursor => '1322801608223717003'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#blocked_ids' do
|
|
before do
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('ids_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.blocked_ids
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
end
|
|
it 'returns an array of numeric user IDs the authenticating user is blocking' do
|
|
blocked_ids = @client.blocked_ids
|
|
expect(blocked_ids).to be_a Twitter::Cursor
|
|
expect(blocked_ids.first).to eq(20_009_713)
|
|
end
|
|
context 'with each' do
|
|
before do
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'}).to_return(:body => fixture('ids_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.blocked_ids.each {}
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#block?' do
|
|
context 'with a screen name passed' do
|
|
before do
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('ids_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'}).to_return(:body => fixture('ids_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'pengwynn'}).to_return(:body => fixture('pengwynn.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.block?('sferik')
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'})).to have_been_made
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns true if block exists' do
|
|
block = @client.block?('pengwynn')
|
|
expect(block).to be true
|
|
end
|
|
it 'returns false if block does not exist' do
|
|
block = @client.block?('sferik')
|
|
expect(block).to be false
|
|
end
|
|
end
|
|
context 'with a user ID passed' do
|
|
before do
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('ids_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'}).to_return(:body => fixture('ids_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resources' do
|
|
@client.block?(7_505_382)
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with a user object passed' do
|
|
before do
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('ids_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'}).to_return(:body => fixture('ids_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resources' do
|
|
user = Twitter::User.new(:id => '7505382')
|
|
@client.block?(user)
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/blocks/ids.json').with(:query => {:cursor => '1305102810874389703'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#block' do
|
|
before do
|
|
stub_post('/1.1/blocks/create.json').with(:body => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.block('sferik')
|
|
expect(a_post('/1.1/blocks/create.json')).to have_been_made
|
|
end
|
|
it 'returns an array of blocked users' do
|
|
users = @client.block('sferik')
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#unblock' do
|
|
before do
|
|
stub_post('/1.1/blocks/destroy.json').with(:body => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.unblock('sferik')
|
|
expect(a_post('/1.1/blocks/destroy.json').with(:body => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns an array of un-blocked users' do
|
|
users = @client.unblock('sferik')
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#users' do
|
|
context 'using a post request' do
|
|
context 'with screen names passed' do
|
|
before do
|
|
stub_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik,pengwynn'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('sferik', 'pengwynn')
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
it 'returns up to 100 users worth of extended information' do
|
|
users = @client.users('sferik', 'pengwynn')
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
context 'with URI objects passed' do
|
|
it 'requests the correct resource' do
|
|
sferik = URI.parse('https://twitter.com/sferik')
|
|
pengwynn = URI.parse('https://twitter.com/pengwynn')
|
|
@client.users(sferik, pengwynn)
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with URI strings passed' do
|
|
it 'requests the correct resource' do
|
|
@client.users('https://twitter.com/sferik', 'https://twitter.com/pengwynn')
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
context 'with numeric screen names passed' do
|
|
before do
|
|
stub_post('/1.1/users/lookup.json').with(:body => {:screen_name => '0,311'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('0', '311')
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:screen_name => '0,311'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with user IDs passed' do
|
|
before do
|
|
stub_post('/1.1/users/lookup.json').with(:body => {:user_id => '7505382,14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users(7_505_382, 14_100_886)
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:user_id => '7505382,14100886'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with both screen names and user IDs passed' do
|
|
before do
|
|
stub_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik', :user_id => '14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('sferik', 14_100_886)
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:screen_name => 'sferik', :user_id => '14100886'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with user objects passed' do
|
|
before do
|
|
stub_post('/1.1/users/lookup.json').with(:body => {:user_id => '7505382,14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
user1 = Twitter::User.new(:id => '7505382')
|
|
user2 = Twitter::User.new(:id => '14100886')
|
|
@client.users(user1, user2)
|
|
expect(a_post('/1.1/users/lookup.json').with(:body => {:user_id => '7505382,14100886'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
context 'using a get request' do
|
|
context 'with screen names passed' do
|
|
before do
|
|
stub_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik,pengwynn'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('sferik', 'pengwynn', :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
it 'returns up to 100 users worth of extended information' do
|
|
users = @client.users('sferik', 'pengwynn', :method => :get)
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
context 'with URI objects passed' do
|
|
it 'requests the correct resource' do
|
|
sferik = URI.parse('https://twitter.com/sferik')
|
|
pengwynn = URI.parse('https://twitter.com/pengwynn')
|
|
@client.users(sferik, pengwynn, :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with URI objects passed' do
|
|
it 'requests the correct resource' do
|
|
@client.users('https://twitter.com/sferik', 'https://twitter.com/pengwynn', :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik,pengwynn'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
context 'with numeric screen names passed' do
|
|
before do
|
|
stub_get('/1.1/users/lookup.json').with(:query => {:screen_name => '0,311'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('0', '311', :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:screen_name => '0,311'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with user IDs passed' do
|
|
before do
|
|
stub_get('/1.1/users/lookup.json').with(:query => {:user_id => '7505382,14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users(7_505_382, 14_100_886, :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:user_id => '7505382,14100886'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with both screen names and user IDs passed' do
|
|
before do
|
|
stub_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik', :user_id => '14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.users('sferik', 14_100_886, :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:screen_name => 'sferik', :user_id => '14100886'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with user objects passed' do
|
|
before do
|
|
stub_get('/1.1/users/lookup.json').with(:query => {:user_id => '7505382,14100886'}).to_return(:body => fixture('users.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
user1 = Twitter::User.new(:id => '7505382')
|
|
user2 = Twitter::User.new(:id => '14100886')
|
|
@client.users(user1, user2, :method => :get)
|
|
expect(a_get('/1.1/users/lookup.json').with(:query => {:user_id => '7505382,14100886'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#user' do
|
|
context 'with a screen name passed' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user('sferik')
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns extended information of a given user' do
|
|
user = @client.user('sferik')
|
|
expect(user).to be_a Twitter::User
|
|
expect(user.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
context 'with a screen name including "@" passed' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => '@sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user('@sferik')
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:screen_name => '@sferik'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with a numeric screen name passed' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => '0'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user('0')
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:screen_name => '0'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with a user ID passed' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user(7_505_382)
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
end
|
|
context 'with a user object passed' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
user = Twitter::User.new(:id => 7_505_382)
|
|
@client.user(user)
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
context 'without a screen name or user ID passed' do
|
|
context 'without options passed' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user
|
|
expect(a_get('/1.1/account/verify_credentials.json')).to have_been_made
|
|
end
|
|
end
|
|
context 'with options passed' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user(:skip_status => true)
|
|
expect(a_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#user?' do
|
|
before do
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'pengwynn'}).to_return(:body => fixture('not_found.json'), :status => 404, :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user?('sferik')
|
|
expect(a_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns true if user exists' do
|
|
user = @client.user?('sferik')
|
|
expect(user).to be true
|
|
end
|
|
it 'returns false if user does not exist' do
|
|
user = @client.user?('pengwynn')
|
|
expect(user).to be false
|
|
end
|
|
end
|
|
|
|
describe '#user_search' do
|
|
before do
|
|
stub_get('/1.1/users/search.json').with(:query => {:q => 'Erik Michaels-Ober'}).to_return(:body => fixture('user_search.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.user_search('Erik Michaels-Ober')
|
|
expect(a_get('/1.1/users/search.json').with(:query => {:q => 'Erik Michaels-Ober'})).to have_been_made
|
|
end
|
|
it 'returns an array of user search results' do
|
|
user_search = @client.user_search('Erik Michaels-Ober')
|
|
expect(user_search).to be_an Array
|
|
expect(user_search.first).to be_a Twitter::User
|
|
expect(user_search.first.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#contributees' do
|
|
context 'with a screen name passed' do
|
|
before do
|
|
stub_get('/1.1/users/contributees.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('contributees.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributees('sferik')
|
|
expect(a_get('/1.1/users/contributees.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns contributees' do
|
|
contributees = @client.contributees('sferik')
|
|
expect(contributees).to be_an Array
|
|
expect(contributees.first).to be_a Twitter::User
|
|
expect(contributees.first.name).to eq('Twitter API')
|
|
end
|
|
end
|
|
context 'with a user ID passed' do
|
|
before do
|
|
stub_get('/1.1/users/contributees.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('contributees.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributees(7_505_382)
|
|
expect(a_get('/1.1/users/contributees.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
end
|
|
context 'without arguments passed' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/contributees.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('contributees.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributees
|
|
expect(a_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'})).to have_been_made
|
|
expect(a_get('/1.1/users/contributees.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
it 'returns contributees' do
|
|
contributees = @client.contributees
|
|
expect(contributees).to be_an Array
|
|
expect(contributees.first).to be_a Twitter::User
|
|
expect(contributees.first.name).to eq('Twitter API')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#contributors' do
|
|
context 'with a screen name passed' do
|
|
before do
|
|
stub_get('/1.1/users/contributors.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('members.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributors('sferik')
|
|
expect(a_get('/1.1/users/contributors.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns contributors' do
|
|
contributors = @client.contributors('sferik')
|
|
expect(contributors).to be_an Array
|
|
expect(contributors.first).to be_a Twitter::User
|
|
expect(contributors.first.id).to eq(13)
|
|
end
|
|
end
|
|
context 'with a user ID passed' do
|
|
before do
|
|
stub_get('/1.1/users/contributors.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('members.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributors(7_505_382)
|
|
expect(a_get('/1.1/users/contributors.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
end
|
|
context 'without arguments passed' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/contributors.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('members.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.contributors
|
|
expect(a_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'})).to have_been_made
|
|
expect(a_get('/1.1/users/contributors.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
it 'returns contributors' do
|
|
contributors = @client.contributors
|
|
expect(contributors).to be_an Array
|
|
expect(contributors.first).to be_a Twitter::User
|
|
expect(contributors.first.id).to eq(13)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#remove_profile_banner' do
|
|
before do
|
|
stub_post('/1.1/account/remove_profile_banner.json').to_return(:body => fixture('empty.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.remove_profile_banner
|
|
expect(a_post('/1.1/account/remove_profile_banner.json')).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
response = @client.remove_profile_banner
|
|
expect(response).to be true
|
|
end
|
|
end
|
|
|
|
describe '#update_profile_banner' do
|
|
before do
|
|
stub_post('/1.1/account/update_profile_banner.json').to_return(:body => fixture('empty.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.update_profile_banner(fixture('me.jpeg'))
|
|
expect(a_post('/1.1/account/update_profile_banner.json')).to have_been_made
|
|
end
|
|
it 'returns a user' do
|
|
response = @client.update_profile_banner(fixture('me.jpeg'))
|
|
expect(response).to be true
|
|
end
|
|
end
|
|
|
|
describe '#profile_banner' do
|
|
context 'with a screen_name passed' do
|
|
before do
|
|
stub_get('/1.1/users/profile_banner.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('profile_banner.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.profile_banner('sferik')
|
|
expect(a_get('/1.1/users/profile_banner.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns a profile banner' do
|
|
banner = @client.profile_banner('sferik')
|
|
expect(banner).to be_a Twitter::ProfileBanner
|
|
expect(banner.sizes).to be_a Hash
|
|
expect(banner.sizes[:mobile].height).to eq(160)
|
|
end
|
|
end
|
|
context 'with a user ID passed' do
|
|
before do
|
|
stub_get('/1.1/users/profile_banner.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('profile_banner.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.profile_banner(7_505_382)
|
|
expect(a_get('/1.1/users/profile_banner.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
end
|
|
context 'without arguments passed' do
|
|
before do
|
|
stub_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
stub_get('/1.1/users/profile_banner.json').with(:query => {:user_id => '7505382'}).to_return(:body => fixture('profile_banner.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.profile_banner
|
|
expect(a_get('/1.1/account/verify_credentials.json').with(:query => {:skip_status => 'true'})).to have_been_made
|
|
expect(a_get('/1.1/users/profile_banner.json').with(:query => {:user_id => '7505382'})).to have_been_made
|
|
end
|
|
it 'returns an array of numeric IDs for every user following the specified user' do
|
|
banner = @client.profile_banner
|
|
expect(banner).to be_a Twitter::ProfileBanner
|
|
expect(banner.sizes).to be_a Hash
|
|
expect(banner.sizes[:mobile].height).to eq(160)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#mute' do
|
|
before do
|
|
stub_post('/1.1/mutes/users/create.json').with(:body => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.mute('sferik')
|
|
expect(a_post('/1.1/mutes/users/create.json')).to have_been_made
|
|
end
|
|
it 'returns an array of muteed users' do
|
|
users = @client.mute('sferik')
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#unmute' do
|
|
before do
|
|
stub_post('/1.1/mutes/users/destroy.json').with(:body => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.unmute('sferik')
|
|
expect(a_post('/1.1/mutes/users/destroy.json').with(:body => {:screen_name => 'sferik'})).to have_been_made
|
|
end
|
|
it 'returns an array of un-muteed users' do
|
|
users = @client.unmute('sferik')
|
|
expect(users).to be_an Array
|
|
expect(users.first).to be_a Twitter::User
|
|
expect(users.first.id).to eq(7_505_382)
|
|
end
|
|
end
|
|
|
|
describe '#muted' do
|
|
before do
|
|
stub_get('/1.1/mutes/users/list.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('users_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.muted
|
|
expect(a_get('/1.1/mutes/users/list.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
end
|
|
it 'returns an array of user objects that the authenticating user is muting' do
|
|
muted = @client.muted
|
|
expect(muted).to be_a Twitter::Cursor
|
|
expect(muted.first).to be_a Twitter::User
|
|
expect(muted.first.id).to eq(7_505_382)
|
|
end
|
|
context 'with each' do
|
|
before do
|
|
stub_get('/1.1/mutes/users/list.json').with(:query => {:cursor => '1322801608223717003'}).to_return(:body => fixture('users_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.muted.each {}
|
|
expect(a_get('/1.1/mutes/users/list.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/mutes/users/list.json').with(:query => {:cursor => '1322801608223717003'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#muted_ids' do
|
|
before do
|
|
stub_get('/1.1/mutes/users/ids.json').with(:query => {:cursor => '-1'}).to_return(:body => fixture('ids_list.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.muted_ids
|
|
expect(a_get('/1.1/mutes/users/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
end
|
|
it 'returns an array of numeric user IDs the authenticating user is muting' do
|
|
muted_ids = @client.muted_ids
|
|
expect(muted_ids).to be_a Twitter::Cursor
|
|
expect(muted_ids.first).to eq(20_009_713)
|
|
end
|
|
context 'with each' do
|
|
before do
|
|
stub_get('/1.1/mutes/users/ids.json').with(:query => {:cursor => '1305102810874389703'}).to_return(:body => fixture('ids_list2.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
end
|
|
it 'requests the correct resource' do
|
|
@client.muted_ids.each {}
|
|
expect(a_get('/1.1/mutes/users/ids.json').with(:query => {:cursor => '-1'})).to have_been_made
|
|
expect(a_get('/1.1/mutes/users/ids.json').with(:query => {:cursor => '1305102810874389703'})).to have_been_made
|
|
end
|
|
end
|
|
end
|
|
end
|