Spec tests updates
Also added some new anti-responding-to-self tests.
This commit is contained in:
parent
770739d922
commit
b541b21456
1 changed files with 42 additions and 4 deletions
|
@ -24,8 +24,17 @@ end
|
|||
|
||||
module Ebooks::Test
|
||||
# Generates a random twitter id
|
||||
def twitter_id
|
||||
# Or a non-random one, given a string.
|
||||
def twitter_id(seed = nil)
|
||||
if seed.nil?
|
||||
(rand*10**18).to_i
|
||||
else
|
||||
id = 1
|
||||
seed.downcase.each_byte do |byte|
|
||||
id *= byte/10
|
||||
end
|
||||
id
|
||||
end
|
||||
end
|
||||
|
||||
# Creates a mock direct message
|
||||
|
@ -33,7 +42,7 @@ module Ebooks::Test
|
|||
# @param text DM content
|
||||
def mock_dm(username, text)
|
||||
Twitter::DirectMessage.new(id: twitter_id,
|
||||
sender: { id: twitter_id, screen_name: username},
|
||||
sender: { id: twitter_id(username), screen_name: username},
|
||||
text: text)
|
||||
end
|
||||
|
||||
|
@ -45,7 +54,7 @@ module Ebooks::Test
|
|||
tweet = Twitter::Tweet.new({
|
||||
id: twitter_id,
|
||||
in_reply_to_status_id: 'mock-link',
|
||||
user: { id: twitter_id, screen_name: username },
|
||||
user: { id: twitter_id(username), screen_name: username },
|
||||
text: text,
|
||||
created_at: Time.now.to_s,
|
||||
entities: {
|
||||
|
@ -58,14 +67,21 @@ module Ebooks::Test
|
|||
tweet
|
||||
end
|
||||
|
||||
# Creates a mock user
|
||||
def mock_user(username)
|
||||
Twitter::User.new(id: twitter_id(username), screen_name: username)
|
||||
end
|
||||
|
||||
def twitter_spy(bot)
|
||||
twitter = spy("twitter")
|
||||
allow(twitter).to receive(:update).and_return(mock_tweet(bot.username, "test tweet"))
|
||||
allow(twitter).to receive(:user).with(no_args).and_return(mock_user(bot.username))
|
||||
twitter
|
||||
end
|
||||
|
||||
def simulate(bot, &b)
|
||||
bot.twitter = twitter_spy(bot)
|
||||
bot.update_myself # Usually called in prepare
|
||||
b.call
|
||||
end
|
||||
|
||||
|
@ -95,6 +111,13 @@ describe Ebooks::Bot do
|
|||
end
|
||||
end
|
||||
|
||||
it "ignores its own dms" do
|
||||
simulate(bot) do
|
||||
expect(bot).to_not receive(:on_message)
|
||||
bot.receive_event(mock_dm("Test_Ebooks", "why am I talking to myself"))
|
||||
end
|
||||
end
|
||||
|
||||
it "responds to mentions" do
|
||||
simulate(bot) do
|
||||
bot.receive_event(mock_tweet("m1sp", "@test_ebooks this is a mention"))
|
||||
|
@ -102,6 +125,14 @@ describe Ebooks::Bot do
|
|||
end
|
||||
end
|
||||
|
||||
it "ignores its own mentions" do
|
||||
simulate(bot) do
|
||||
expect(bot).to_not receive(:on_mention)
|
||||
expect(bot).to_not receive(:on_timeline)
|
||||
bot.receive_event(mock_tweet("Test_Ebooks", "@m1sp i think that @test_ebooks is best bot"))
|
||||
end
|
||||
end
|
||||
|
||||
it "responds to timeline tweets" do
|
||||
simulate(bot) do
|
||||
bot.receive_event(mock_tweet("m1sp", "some excellent tweet"))
|
||||
|
@ -109,6 +140,13 @@ describe Ebooks::Bot do
|
|||
end
|
||||
end
|
||||
|
||||
it "ignores its own timeline tweets" do
|
||||
simulate(bot) do
|
||||
expect(bot).to_not receive(:on_timeline)
|
||||
bot.receive_event(mock_tweet("Test_Ebooks", "pudding is cute"))
|
||||
end
|
||||
end
|
||||
|
||||
it "links tweets to conversations correctly" do
|
||||
tweet1 = mock_tweet("m1sp", "tweet 1", id: 1, in_reply_to_status_id: nil)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue