From 10989cccaa76c65c8788df17998af412fd732d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 30 Dec 2019 22:19:00 -0500 Subject: [PATCH] fix: meta description missing if url doesn't have post index --- src/controllers/topics.js | 12 ++++++------ test/topics.js | 10 ++++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index a42747c0d4..06957d1fae 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -166,9 +166,9 @@ async function buildBreadcrumbs(topicData) { } async function addTags(topicData, req, res) { - var postAtIndex = topicData.posts.find(p => parseInt(p.index, 10) === parseInt(Math.max(0, req.params.post_index - 1), 10)); - - var description = ''; + const postIndex = parseInt(req.params.post_index, 10) || 0; + const postAtIndex = topicData.posts.find(p => parseInt(p.index, 10) === parseInt(Math.max(0, postIndex - 1), 10)); + let description = ''; if (postAtIndex && postAtIndex.content) { description = utils.stripHTMLTags(utils.decodeHTMLEntities(postAtIndex.content)); } @@ -329,10 +329,10 @@ topicsController.pagination = async function (req, res, callback) { return helpers.notAllowed(req, res); } - var postCount = topic.postcount; - var pageCount = Math.max(1, Math.ceil(postCount / settings.postsPerPage)); + const postCount = topic.postcount; + const pageCount = Math.max(1, Math.ceil(postCount / settings.postsPerPage)); - var paginationData = pagination.create(currentPage, pageCount); + const paginationData = pagination.create(currentPage, pageCount); paginationData.rel.forEach(function (rel) { rel.href = nconf.get('url') + '/topic/' + topic.slug + rel.href; }); diff --git a/test/topics.js b/test/topics.js index 3ba4fc2de4..00976ba3f3 100644 --- a/test/topics.js +++ b/test/topics.js @@ -918,6 +918,16 @@ describe('Topic\'s', function () { }); }); + it('should load topic api data', function (done) { + request(nconf.get('url') + '/api/topic/' + topicData.slug, { json: true }, function (err, response, body) { + assert.ifError(err); + assert.equal(response.statusCode, 200); + assert.strictEqual(body._header.tags.meta.find(t => t.name === 'description').content, 'topic content'); + assert.strictEqual(body._header.tags.meta.find(t => t.property === 'og:description').content, 'topic content'); + done(); + }); + }); + it('should 404 if post index is invalid', function (done) { request(nconf.get('url') + '/topic/' + topicData.slug + '/derp', function (err, response) { assert.ifError(err);