end
def filter_from_home?(status, receiver_id)
+ return true if KeywordMute.where(account_id: receiver_id).matches?(status.text)
+
return false if receiver_id == status.account_id
return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?)
require 'rails_helper'
RSpec.describe KeywordMute, type: :model do
- pending "add some examples to (or delete) #{__FILE__}"
+ describe '.matches?' do
+ let(:alice) { Fabricate(:account, username: 'alice').tap(&:save!) }
+ let(:status) { Fabricate(:status, account: alice).tap(&:save!) }
+ let(:keyword_mute) { Fabricate(:keyword_mute, account: alice, keyword: 'take').tap(&:save!) }
+
+ it 'returns true if any keyword in the set matches the status text' do
+ status.update_attribute(:text, 'This is a hot take')
+
+ expect(KeywordMute.where(account: alice).matches?(status.text)).to be_truthy
+ end
+
+ it 'returns false if no keyword in the set matches the status text'
+
+ describe 'matching' do
+ it 'is case-insensitive'
+ end
+ end
end