mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 16:35:43 +08:00
8405ec2831
Previously, we used the schema type "DiscussionForumPosting" for all the posts including replies. This is not recommended as per Google search experts. This commit changes the schema type to "Comment" for replies.
64 lines
2.1 KiB
Ruby
64 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
require "ostruct"
|
|
|
|
RSpec.describe "topics/show.html.erb" do
|
|
fab!(:topic) { Fabricate(:topic) }
|
|
|
|
it "add nofollow to RSS alternate link for topic" do
|
|
topic_view = OpenStruct.new(topic: topic, posts: [])
|
|
topic_view.stubs(:summary).returns("")
|
|
view.stubs(:crawler_layout?).returns(false)
|
|
view.stubs(:url_for).returns("https://www.example.com/test.rss")
|
|
view.instance_variable_set("@topic_view", topic_view)
|
|
assign(:tags, [])
|
|
|
|
render template: "topics/show", formats: [:html]
|
|
|
|
expect(view.content_for(:head)).to match(
|
|
%r{<link rel="alternate nofollow" type="application/rss\+xml" title="[^"]+" href="https://www.example.com/test\.rss" />},
|
|
)
|
|
end
|
|
|
|
it "adds sturctured data" do
|
|
view.stubs(:include_crawler_content?).returns(true)
|
|
post = Fabricate(:post, topic: topic)
|
|
TopicLink.create!(
|
|
topic_id: post.topic_id,
|
|
post_id: post.id,
|
|
user_id: post.user_id,
|
|
url: "https://example.com/",
|
|
domain: "example.com",
|
|
link_topic_id: Fabricate(:topic).id,
|
|
reflection: true,
|
|
)
|
|
assign(:topic_view, TopicView.new(topic))
|
|
assign(:tags, [])
|
|
|
|
render template: "topics/show", formats: [:html]
|
|
|
|
links_list = Nokogiri::HTML5.fragment(rendered).css(".crawler-linkback-list")
|
|
first_item = links_list.css('[itemprop="itemListElement"]')
|
|
expect(first_item.css('[itemprop="position"]')[0]["content"]).to eq("1")
|
|
expect(first_item.css('[itemprop="url"]')[0]["href"]).to eq("https://example.com/")
|
|
end
|
|
|
|
it "uses comment scheme type for replies" do
|
|
view.stubs(:crawler_layout?).returns(true)
|
|
view.stubs(:include_crawler_content?).returns(true)
|
|
Fabricate(:post, topic: topic)
|
|
Fabricate(:post, topic: topic)
|
|
Fabricate(:post, topic: topic)
|
|
assign(:topic_view, TopicView.new(topic))
|
|
assign(:tags, [])
|
|
|
|
render template: "topics/show", formats: [:html]
|
|
|
|
doc = Nokogiri::HTML5.fragment(rendered)
|
|
topic_schema = doc.css('[itemtype="http://schema.org/DiscussionForumPosting"]')
|
|
expect(topic_schema.size).to eq(1)
|
|
expect(topic_schema.css('[itemtype="http://schema.org/Comment"]').size).to eq(2)
|
|
end
|
|
end
|