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.
This commit is contained in:
Vinoth Kannan 2019-10-21 17:57:31 +05:30
parent 594925b896
commit 5e55e75aed
2 changed files with 18 additions and 2 deletions

View File

@ -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

View File

@ -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)