diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index 2ba445324cc..7264fe24286 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -527,7 +527,7 @@ class PostRevisor modifications = post_changes.merge(@topic_changes.diff) if modifications.keys.size == 1 && tags_diff = modifications["tags"] a, b = tags_diff[0] || [], tags_diff[1] || [] - changed_tags = (a + b) - (a & b) + changed_tags = ((a + b) - (a & b)).map(&:presence).compact if (changed_tags - DiscourseTagging.hidden_tag_names(nil)).empty? return true end diff --git a/spec/components/post_revisor_spec.rb b/spec/components/post_revisor_spec.rb index 95bd120208b..ed4f2887e7f 100644 --- a/spec/components/post_revisor_spec.rb +++ b/spec/components/post_revisor_spec.rb @@ -762,6 +762,14 @@ describe PostRevisor do }.to_not change { topic.reload.bumped_at } end + it "doesn't bump topic if empty string is given" do + topic.tags = Tag.where(name: ['important', 'secret']).to_a + expect { + result = subject.revise!(Fabricate(:admin), raw: post.raw, tags: [""]) + expect(result).to eq(true) + }.to_not 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)