Spec out KeywordMute interface. #164.
parent
c123b710ad
commit
ddcb129101
|
@ -138,6 +138,8 @@ class FeedManager
|
|||
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?)
|
||||
|
||||
|
|
|
@ -10,4 +10,6 @@
|
|||
#
|
||||
|
||||
class KeywordMute < ApplicationRecord
|
||||
def self.matches?(text)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue