feat: Ignore tweets from blocked users (#1408)

This commit is contained in:
Pranav Raj S 2020-11-16 10:46:53 +05:30 committed by GitHub
parent 563da0e052
commit ef99fd3311
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 1 deletions

View file

@ -3,7 +3,7 @@ class Twitter::TweetParserService < Twitter::WebhooksBaseService
def perform def perform
set_inbox set_inbox
return if message_already_exist? return if message_already_exist? || user_has_blocked?
create_message create_message
end end
@ -34,6 +34,10 @@ class Twitter::TweetParserService < Twitter::WebhooksBaseService
tweet_data['id'].to_s tweet_data['id'].to_s
end end
def user_has_blocked?
payload['user_has_blocked'] == true
end
def parent_tweet_id def parent_tweet_id
tweet_data['in_reply_to_status_id_str'].nil? ? tweet_data['id'].to_s : tweet_data['in_reply_to_status_id_str'] tweet_data['in_reply_to_status_id_str'].nil? ? tweet_data['id'].to_s : tweet_data['in_reply_to_status_id_str']
end end

View file

@ -3,6 +3,7 @@
FactoryBot.define do FactoryBot.define do
factory :tweet_create_event, class: Hash do factory :tweet_create_event, class: Hash do
for_user_id { '1' } for_user_id { '1' }
user_has_blocked { false }
tweet_create_events do tweet_create_events do
[ [
{ {

View file

@ -10,6 +10,7 @@ describe Webhooks::Twitter do
let!(:twitter_inbox) { create(:inbox, channel: twitter_channel, account: account, greeting_enabled: false) } let!(:twitter_inbox) { create(:inbox, channel: twitter_channel, account: account, greeting_enabled: false) }
let!(:dm_params) { build(:twitter_message_create_event).with_indifferent_access } let!(:dm_params) { build(:twitter_message_create_event).with_indifferent_access }
let!(:tweet_params) { build(:tweet_create_event).with_indifferent_access } let!(:tweet_params) { build(:tweet_create_event).with_indifferent_access }
let!(:tweet_params_from_blocked_user) { build(:tweet_create_event, user_has_blocked: true).with_indifferent_access }
describe '#perform' do describe '#perform' do
context 'with direct_message params' do context 'with direct_message params' do
@ -22,6 +23,13 @@ describe Webhooks::Twitter do
end end
context 'with tweet_params params' do context 'with tweet_params params' do
it 'does not create incoming message in the twitter inbox if it is a blocked user' do
twitter_webhook.new(tweet_params_from_blocked_user).consume
expect(twitter_inbox.contacts.count).to be 0
expect(twitter_inbox.conversations.count).to be 0
expect(twitter_inbox.messages.count).to be 0
end
it 'creates incoming message in the twitter inbox' do it 'creates incoming message in the twitter inbox' do
twitter_webhook.new(tweet_params).consume twitter_webhook.new(tweet_params).consume
expect(twitter_inbox.contacts.count).to be 1 expect(twitter_inbox.contacts.count).to be 1