FIX: 'only_hidden_tags_changed?' method returned 'true' even when tags are not changed.

FIX: ‘only_hidden_tags_changed?’ method returned ‘true’ even when tags are not changed.

While editing the first post it does’t bumped the topic when the new post revision created. Because we wrongly assumed that the hidden tags are changed even when no tags are updated.

diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb
index 02b88d1173..cd68bf7bb0 100644
--- a/lib/post_revisor.rb
+++ b/lib/post_revisor.rb
@@ -522,14 +522,17 @@ class PostRevisor
   end
 
   def only_hidden_tags_changed?
+    return false if (hidden_tag_names = DiscourseTagging.hidden_tag_names).blank?
+
     modifications = post_changes.merge(@topic_changes.diff)
-    if modifications.keys.size == 1 && tags_diff = modifications["tags"]
+    if modifications.keys.size == 1 && (tags_diff = modifications["tags"]).present?
       a, b = tags_diff[0] || [], tags_diff[1] || []
       changed_tags = ((a + b) - (a & b)).map(&:presence).compact
-      if (changed_tags - DiscourseTagging.hidden_tag_names(nil)).empty?
+      if (changed_tags - hidden_tag_names).empty?
         return true
       end
     end
+
     false
   end
 
diff --git a/spec/components/post_revisor_spec.rb b/spec/components/post_revisor_spec.rb
index a47596fe38..598fb686d5 100644
--- a/spec/components/post_revisor_spec.rb
+++ b/spec/components/post_revisor_spec.rb
@@ -190,6 +190,12 @@ describe PostRevisor do
         expect(post.public_version).to eq(1)
         expect(post.revisions.size).to eq(0)
       end
+
+      it "should bump the topic" do
+        expect {
+          subject.revise!(post.user, { raw: 'updated body' }, revised_at: post.updated_at + SiteSetting.editing_grace_period + 1.seconds)
+        }.to change { post.topic.bumped_at }
+      end
     end
 
     describe 'revision much later' do
@@ -783,6 +789,13 @@ describe PostRevisor do
               }.to_not change { topic.reload.bumped_at }
             end
 
+            it "should bump topic if non staff-only tags are added" do
+              expect {
+                result = subject.revise!(Fabricate(:admin), raw: post.raw, tags: topic.tags.map(&:name) + [Fabricate(:tag).name])
+                expect(result).to eq(true)
+              }.to change { topic.reload.bumped_at }
+            end
+
             it "creates a hidden revision" do
               subject.revise!(Fabricate(:admin), raw: post.raw, tags: topic.tags.map(&:name) + ['secret'])
               expect(post.reload.revisions.first.hidden).to eq(true)

GitHub sha: 5e55e75a

2 Likes