diff --git a/plugin.rb b/plugin.rb
index 01c4f7a..0514e45 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -238,7 +238,7 @@ SQL
'name' => topic.title,
'text' => first_post.excerpt,
'upvoteCount' => first_post.like_count,
- 'answerCount' => topic.reply_count,
+ 'answerCount' => 0,
'dateCreated' => topic.created_at,
'author' => {
'@type' => 'Person',
@@ -247,6 +247,7 @@ SQL
}
if accepted_answer = Post.find_by(id: topic.custom_fields["accepted_answer_post_id"])
+ question_json['answerCount'] = 1
question_json[:acceptedAnswer] = {
'@type' => 'Answer',
'text' => accepted_answer.excerpt,
diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb
index 19b6e35..106bdf0 100644
--- a/spec/requests/topics_controller_spec.rb
+++ b/spec/requests/topics_controller_spec.rb
@@ -5,31 +5,46 @@ RSpec.describe TopicsController do
let(:topic) { p1.topic }
let(:p2) { Fabricate(:post, like_count: 2, topic: topic, user: Fabricate(:user)) }
+ def schema_json(answerCount)
+ if answerCount > 0
+ answer_json = ',"acceptedAnswer":{"@type":"Answer","text":"%{answer_text}","upvoteCount":%{answer_likes},"dateCreated":"%{answered_at}","url":"%{answer_url}","author":{"@type":"Person","name":"%{username2}"}}' % {
+ answer_text: p2.excerpt,
+ answer_likes: p2.like_count,
+ answered_at: p2.created_at.as_json,
+ answer_url: p2.full_url,
+ username2: p2.user&.username
+ }
+ else
+ answer_json = ""
+ end
+
+ '' % {
+ title: topic.title,
+ question_text: p1.excerpt,
+ question_likes: p1.like_count,
+ answerCount: answerCount,
+ created_at: topic.created_at.as_json,
+ username1: topic.user&.name,
+ answer_json: answer_json
+ }
+ end
+
before do
SiteSetting.allow_solved_on_all_topics = true
end
it 'should include correct schema information in header' do
+ get "/t/#{topic.slug}/#{topic.id}"
+
+ expect(response.body).to include(schema_json(0))
+
p2.custom_fields["is_accepted_answer"] = true
p2.save_custom_fields
-
topic.custom_fields["accepted_answer_post_id"] = p2.id
topic.save_custom_fields
get "/t/#{topic.slug}/#{topic.id}"
- expect(response.body).to include('' % {
- title: topic.title,
- question_text: p1.excerpt,
- question_likes: p1.like_count,
- reply_count: topic.reply_count,
- created_at: topic.created_at.as_json,
- username1: topic.user&.name,
- answer_text: p2.excerpt,
- answer_likes: p2.like_count,
- answered_at: p2.created_at.as_json,
- answer_url: p2.full_url,
- username2: p2.user&.username
- })
+ expect(response.body).to include(schema_json(1))
end
end