mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 23:07:28 +08:00
FIX: removing hidden tag bumps topic when all tags are removed
JS sends empty string to remove all tags.
This commit is contained in:
@ -527,7 +527,7 @@ class PostRevisor
|
|||||||
modifications = post_changes.merge(@topic_changes.diff)
|
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"]
|
||||||
a, b = tags_diff[0] || [], tags_diff[1] || []
|
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?
|
if (changed_tags - DiscourseTagging.hidden_tag_names(nil)).empty?
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -762,6 +762,14 @@ describe PostRevisor do
|
|||||||
}.to_not change { topic.reload.bumped_at }
|
}.to_not change { topic.reload.bumped_at }
|
||||||
end
|
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
|
it "creates a hidden revision" do
|
||||||
subject.revise!(Fabricate(:admin), raw: post.raw, tags: topic.tags.map(&:name) + ['secret'])
|
subject.revise!(Fabricate(:admin), raw: post.raw, tags: topic.tags.map(&:name) + ['secret'])
|
||||||
expect(post.reload.revisions.first.hidden).to eq(true)
|
expect(post.reload.revisions.first.hidden).to eq(true)
|
||||||
|
Reference in New Issue
Block a user