FIX: Decrement posts read count when destroying post timings (#8172)

This commit is contained in:
Roman Rizzi 2019-10-08 15:39:23 -03:00 committed by GitHub
parent 349c1cd085
commit b805037825
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -71,6 +71,8 @@ class PostTiming < ActiveRecord::Base
last_read_post_number: last_read
)
topic.posts.find_by(post_number: post_number).decrement!(:reads)
if !topic.private_message?
set_minimum_first_unread!(user_id: user.id, date: topic.updated_at)
end
@ -87,6 +89,8 @@ class PostTiming < ActiveRecord::Base
.where('user_id = ? and topic_id in (?)', user_id, topic_ids)
.delete_all
Post.where(topic_id: topic_ids).update_all('reads = reads - 1')
date = Topic.listable_topics.where(id: topic_ids).minimum(:updated_at)
if date

View File

@ -164,4 +164,24 @@ describe PostTiming do
end
describe 'decrementing posts read count when destroying post timings' do
let(:initial_read_count) { 0 }
let(:post) { Fabricate(:post, reads: initial_read_count) }
before do
PostTiming.process_timings(post.user, post.topic_id, 1, [[post.post_number, 100]])
end
it '#destroy_last_for decrements the reads count for a post' do
PostTiming.destroy_last_for(post.user, post.topic_id)
expect(post.reload.reads).to eq initial_read_count
end
it '#destroy_for decrements the reads count for a post' do
PostTiming.destroy_for(post.user, [post.topic_id])
expect(post.reload.reads).to eq initial_read_count
end
end
end