about summary refs log tree commit diff
path: root/spec/lib/feed_manager_spec.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2018-07-09 02:22:09 +0200
committerEugen Rochko <eugen@zeonfederated.com>2018-07-09 02:22:09 +0200
commit1ca4e51eb38de6de81cedf3ddcdaa626f1d1c569 (patch)
tree3cf44ef95b178d233fd34d2ec2aae2a7021c159d /spec/lib/feed_manager_spec.rb
parent451e585b9720c61ef9a155a16484b25ded79d512 (diff)
Add option to not consider word boundaries when processing keyword filtering (#7975)
* Add option to not consider word boundaries when filtering phrases

* Add a few tests for keyword/phrase filtering
Diffstat (limited to 'spec/lib/feed_manager_spec.rb')
-rw-r--r--spec/lib/feed_manager_spec.rb28
1 files changed, 22 insertions, 6 deletions
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index d1b847675..7535e144d 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -127,12 +127,28 @@ RSpec.describe FeedManager do
         expect(FeedManager.instance.filter?(:home, reblog, alice.id)).to be true
       end
 
-      it 'returns true if status contains irreversibly muted phrase' do
-        alice.custom_filters.create!(phrase: 'farts', context: %w(home public), irreversible: true)
-        alice.custom_filters.create!(phrase: 'pop tarts', context: %w(home), irreversible: true)
-        alice.follow!(jeff)
-        status = Fabricate(:status, text: 'i sure like POP TARts', account: jeff)
-        expect(FeedManager.instance.filter?(:home, status, alice.id)).to be true
+      context 'for irreversibly muted phrases' do
+        it 'considers word boundaries when matching' do
+          alice.custom_filters.create!(phrase: 'bob', context: %w(home), irreversible: true)
+          alice.follow!(jeff)
+          status = Fabricate(:status, text: 'bobcats', account: jeff)
+          expect(FeedManager.instance.filter?(:home, status, alice.id)).to be_falsy
+        end
+
+        it 'returns true if phrase is contained' do
+          alice.custom_filters.create!(phrase: 'farts', context: %w(home public), irreversible: true)
+          alice.custom_filters.create!(phrase: 'pop tarts', context: %w(home), irreversible: true)
+          alice.follow!(jeff)
+          status = Fabricate(:status, text: 'i sure like POP TARts', account: jeff)
+          expect(FeedManager.instance.filter?(:home, status, alice.id)).to be true
+        end
+
+        it 'matches substrings if whole_word is false' do
+          alice.custom_filters.create!(phrase: 'take', context: %w(home), whole_word: false, irreversible: true)
+          alice.follow!(jeff)
+          status = Fabricate(:status, text: 'shiitake', account: jeff)
+          expect(FeedManager.instance.filter?(:home, status, alice.id)).to be true
+        end
       end
     end