FIX: skip hidden posts while generating canonical url.
Previously, while generating the topic page's canoncial url we used the current post number. It will create invalid canonical path if the topic has whsiper posts. Now we only taking the visible posts for current page index calculation.
This commit is contained in:
parent
6b4cebed3e
commit
06d426bd87
|
@ -122,7 +122,8 @@ class TopicView
|
|||
if @page > 1
|
||||
"?page=#{@page}"
|
||||
else
|
||||
page = ((@post_number - 1) / @limit) + 1
|
||||
posts_count = unfiltered_posts.where("post_number <= ?", @post_number).count
|
||||
page = ((posts_count - 1) / @limit) + 1
|
||||
page > 1 ? "?page=#{page}" : ""
|
||||
end
|
||||
|
||||
|
|
|
@ -244,8 +244,19 @@ describe TopicView do
|
|||
end
|
||||
|
||||
it "generates a canonical correctly for paged results" do
|
||||
expect(TopicView.new(1234, user, post_number: 10 * TopicView.chunk_size)
|
||||
.canonical_path).to eql("/1234?page=10")
|
||||
5.times { |i| Fabricate(:post, post_number: i + 1, topic: topic) }
|
||||
|
||||
expect(TopicView.new(1234, user, post_number: 5, limit: 2)
|
||||
.canonical_path).to eql("/1234?page=3")
|
||||
end
|
||||
|
||||
it "generates canonical path correctly by skipping whisper posts" do
|
||||
2.times { |i| Fabricate(:post, post_number: i + 1, topic: topic) }
|
||||
2.times { |i| Fabricate(:whisper, post_number: i + 3, topic: topic) }
|
||||
Fabricate(:post, post_number: 5, topic: topic)
|
||||
|
||||
expect(TopicView.new(1234, user, post_number: 5, limit: 2)
|
||||
.canonical_path).to eql("/1234?page=2")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue