From 584cfd09ef1ca8de3e7ba4735949643b9ee4ad84 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 22 Nov 2016 15:29:58 +0300 Subject: [PATCH] suggested topics test --- src/topics/suggested.js | 30 ++++++++++++++++++------------ test/topics.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/topics/suggested.js b/src/topics/suggested.js index a7b1190bf1..aebef72683 100644 --- a/src/topics/suggested.js +++ b/src/topics/suggested.js @@ -1,13 +1,11 @@ 'use strict'; -var async = require('async'), - _ = require('underscore'), - - categories = require('../categories'), - search = require('../search'), - db = require('../database'); +var async = require('async'); +var _ = require('underscore'); +var categories = require('../categories'); +var search = require('../search'); module.exports = function (Topics) { @@ -29,7 +27,13 @@ module.exports = function (Topics) { var tids = results.tagTids.concat(results.searchTids).concat(results.categoryTids); tids = tids.filter(function (_tid, index, array) { return parseInt(_tid, 10) !== parseInt(tid, 10) && array.indexOf(_tid) === index; - }).slice(start, stop + 1); + }); + + if (stop === -1) { + tids = tids.slice(start); + } else { + tids = tids.slice(start, stop + 1); + } Topics.getTopics(tids, uid, callback); }); @@ -63,12 +67,14 @@ module.exports = function (Topics) { } function getCategoryTids(tid, callback) { - Topics.getTopicField(tid, 'cid', function (err, cid) { - if (err || !cid) { - return callback(err, []); + async.waterfall([ + function (next) { + Topics.getTopicField(tid, 'cid', next); + }, + function (cid, next) { + categories.getTopicIds('cid:' + cid + ':tids', true, 0, 9, next); } - categories.getTopicIds('cid:' + cid + ':tids', true, 0, 9, callback); - }); + ], callback); } }; \ No newline at end of file diff --git a/test/topics.js b/test/topics.js index 01ee3c0aeb..8dfc024f64 100644 --- a/test/topics.js +++ b/test/topics.js @@ -654,6 +654,34 @@ describe('Topic\'s', function () { }); + describe('suggested topics', function () { + var tid1; + var tid2; + before(function (done) { + async.parallel({ + topic1: function (next) { + topics.post({uid: adminUid, tags: ['nodebb'], title: 'topic title 1', content: 'topic 1 content', cid: topic.categoryId}, next); + }, + topic2: function (next) { + topics.post({uid: adminUid, tags: ['nodebb'], title: 'topic title 2', content: 'topic 2 content', cid: topic.categoryId}, next); + } + }, function (err, results) { + assert.ifError(err); + tid1 = results.topic1.topicData.tid; + tid2 = results.topic2.topicData.tid; + done(); + }); + }); + + it('should return suggested topics', function (done) { + topics.getSuggestedTopics(tid1, adminUid, 0, -1, function (err, topics) { + assert.ifError(err); + assert(Array.isArray(topics)); + done(); + }); + }); + }); + after(function (done) {