FIX: `Topic.similar_to` results in error if cooked raw is blank.

FIX: Topic.similar_to results in error if cooked raw is blank.

diff --git a/app/models/topic.rb b/app/models/topic.rb
index e665125..9271cc6 100644
--- a/app/models/topic.rb
+++ b/app/models/topic.rb
@@ -597,12 +597,14 @@ class Topic < ActiveRecord::Base
         PrettyText.cook(raw[0...MAX_SIMILAR_BODY_LENGTH].strip)
       )
 
-      raw_tsquery = Search.set_tsquery_weight_filter(
-        Search.prepare_data(cooked),
-        'B'
-      )
+      if cooked.present?
+        raw_tsquery = Search.set_tsquery_weight_filter(
+          Search.prepare_data(cooked),
+          'B'
+        )
 
-      tsquery = "#{tsquery} & #{raw_tsquery}"
+        tsquery = "#{tsquery} & #{raw_tsquery}"
+      end
     end
 
     tsquery = Search.to_tsquery(term: tsquery, joiner: "|")
diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb
index 516c509..39d8a3b 100644
--- a/spec/models/topic_spec.rb
+++ b/spec/models/topic_spec.rb
@@ -515,6 +515,10 @@ describe Topic do
       end
     end
 
+    it 'does not result in a syntax error when raw is blank after cooking' do
+      expect(Topic.similar_to('some title', '#')).to eq([])
+    end
+
     context 'with a similar topic' do
       fab!(:post) {
         SearchIndexer.enable

GitHub sha: aae9e6e5

1 Like