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 end
def only_hidden_tags_changed? def only_hidden_tags_changed?
return false if (hidden_tag_names = DiscourseTagging.hidden_tag_names).blank?
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"]).present?
a, b = tags_diff[0] || [], tags_diff[1] || [] a, b = tags_diff[0] || [], tags_diff[1] || []
changed_tags = ((a + b) - (a & b)).map(&:presence).compact 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 return true
end end
end end
false false
end end

View File

@ -190,6 +190,12 @@ describe PostRevisor do
expect(post.public_version).to eq(1) expect(post.public_version).to eq(1)
expect(post.revisions.size).to eq(0) expect(post.revisions.size).to eq(0)
end 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 end
describe 'revision much later' do describe 'revision much later' do
@ -783,6 +789,13 @@ describe PostRevisor do
}.to_not change { topic.reload.bumped_at } }.to_not change { topic.reload.bumped_at }
end 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 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)