Spec out KeywordMute interface. #164.
parent
9093e2de7a
commit
4745d6eeca
|
@ -138,6 +138,8 @@ class FeedManager
|
||||||
end
|
end
|
||||||
|
|
||||||
def filter_from_home?(status, receiver_id)
|
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 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?)
|
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
|
class KeywordMute < ApplicationRecord
|
||||||
|
def self.matches?(text)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,21 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe KeywordMute, type: :model do
|
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
|
end
|
||||||
|
|
Loading…
Reference in New Issue