twitter-status-bot/.gems/gems/twitter-5.11.0/spec/twitter/streaming/client_spec.rb

124 lines
4.0 KiB
Ruby

require 'helper'
describe Twitter::Streaming::Client do
before do
@client = Twitter::Streaming::Client.new
end
class FakeConnection
def initialize(body)
@body = body
end
def stream(_, response)
@body.each_line do |line|
response.on_body(line)
end
end
end
describe '#before_request' do
it 'runs before a request' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
var = false
@client.before_request do
var = true
end
expect(var).to be false
@client.user {}
expect(var).to be true
end
end
describe '#filter' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
objects = []
@client.filter(:track => 'india') do |object|
objects << object
end
expect(objects.size).to eq(2)
expect(objects.first).to be_a Twitter::Tweet
expect(objects.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
end
end
describe '#firehose' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
objects = []
@client.firehose do |object|
objects << object
end
expect(objects.size).to eq(2)
expect(objects.first).to be_a Twitter::Tweet
expect(objects.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
end
end
describe '#sample' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
objects = []
@client.sample do |object|
objects << object
end
expect(objects.size).to eq(2)
expect(objects.first).to be_a Twitter::Tweet
expect(objects.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
end
end
describe '#site' do
context 'with a user ID passed' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
objects = []
@client.site(7_505_382) do |object|
objects << object
end
expect(objects.size).to eq(2)
expect(objects.first).to be_a Twitter::Tweet
expect(objects.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
end
end
context 'with a user object passed' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming.json'))
objects = []
user = Twitter::User.new(:id => 7_505_382)
@client.site(user) do |object|
objects << object
end
expect(objects.size).to eq(2)
expect(objects.first).to be_a Twitter::Tweet
expect(objects.first.text).to eq "The problem with your code is that it's doing exactly what you told it to do."
end
end
end
describe '#user' do
it 'returns an arary of Tweets' do
@client.connection = FakeConnection.new(fixture('track_streaming_user.json'))
objects = []
@client.user do |object|
objects << object
end
expect(objects.size).to eq(6)
expect(objects[0]).to be_a Twitter::Streaming::FriendList
expect(objects[0]).to eq([488_736_931, 311_444_249])
expect(objects[1]).to be_a Twitter::Tweet
expect(objects[1].text).to eq("The problem with your code is that it's doing exactly what you told it to do.")
expect(objects[2]).to be_a Twitter::DirectMessage
expect(objects[2].text).to eq('hello bot')
expect(objects[3]).to be_a Twitter::Streaming::Event
expect(objects[3].name).to eq(:follow)
expect(objects[4]).to be_a Twitter::Streaming::DeletedTweet
expect(objects[4].id).to eq(272_691_609_211_117_568)
expect(objects[5]).to be_a Twitter::Streaming::StallWarning
expect(objects[5].code).to eq('FALLING_BEHIND')
end
end
end