From a75fd636ad03c5aef1e194d0250757aa4841991a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 11 May 2023 20:21:57 -0400 Subject: [PATCH] test: add missing tests --- src/user/digest.js | 5 +++-- test/topics.js | 51 ++++++++++++++++++++++++++++++++++++++++------ test/user.js | 13 ++++++++++++ 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/user/digest.js b/src/user/digest.js index 4a62313c6d..d45cf8e576 100644 --- a/src/user/digest.js +++ b/src/user/digest.js @@ -20,14 +20,14 @@ Digest.execute = async function (payload) { const digestsDisabled = meta.config.disableEmailSubscriptions === 1; if (digestsDisabled) { winston.info(`[user/jobs] Did not send digests (${payload.interval}) because subscription system is disabled.`); - return; + return false; } let { subscribers } = payload; if (!subscribers) { subscribers = await Digest.getSubscribers(payload.interval); } if (!subscribers.length) { - return; + return false; } try { winston.info(`[user/jobs] Digest (${payload.interval}) scheduling completed (${subscribers.length} subscribers). Sending emails; this may take some time...`); @@ -36,6 +36,7 @@ Digest.execute = async function (payload) { subscribers: subscribers, }); winston.info(`[user/jobs] Digest (${payload.interval}) complete.`); + return true; } catch (err) { winston.error(`[user/jobs] Could not send digests (${payload.interval})\n${err.stack}`); throw err; diff --git a/test/topics.js b/test/topics.js index 8fd9b77cb5..0febc38699 100644 --- a/test/topics.js +++ b/test/topics.js @@ -82,12 +82,15 @@ describe('Topic\'s', () => { }); }); - it('should get post count', (done) => { - socketTopics.postcount({ uid: adminUid }, topic.tid, (err, count) => { - assert.ifError(err); - assert.equal(count, 1); - done(); - }); + it('should get post count', async () => { + const count = await socketTopics.postcount({ uid: adminUid }, topic.tid); + assert.strictEqual(count, 1); + }); + + it('should get users postcount in topic', async () => { + assert.strictEqual(await socketTopics.getPostCountInTopic({ uid: 0 }, 0), 0); + assert.strictEqual(await socketTopics.getPostCountInTopic({ uid: adminUid }, 0), 0); + assert.strictEqual(await socketTopics.getPostCountInTopic({ uid: adminUid }, topic.tid), 1); }); it('should load topic', async () => { @@ -2221,6 +2224,42 @@ describe('Topic\'s', () => { }); }); + describe('next post index', () => { + it('should error with invalid data', async () => { + await assert.rejects(socketTopics.getMyNextPostIndex({ uid: 1 }, null), { message: '[[error:invalid-data]]' }); + await assert.rejects(socketTopics.getMyNextPostIndex({ uid: 1 }, {}), { message: '[[error:invalid-data]]' }); + await assert.rejects(socketTopics.getMyNextPostIndex({ uid: 1 }, { tid: 1 }), { message: '[[error:invalid-data]]' }); + await assert.rejects(socketTopics.getMyNextPostIndex({ uid: 1 }, { tid: 1, index: 1 }), { message: '[[error:invalid-data]]' }); + }); + + it('should return 0 if user has no posts in topic', async () => { + const uid = await User.create({ username: 'indexposter' }); + const t = await topics.post({ uid: uid, title: 'topic 1', content: 'content 1', cid: categoryObj.cid }); + const index = await socketTopics.getMyNextPostIndex({ uid: adminUid }, { tid: t.topicData.tid, index: 1, sort: 'oldest_to_newest' }); + assert.strictEqual(index, 0); + }); + + it('should get users next post index in topic', async () => { + const t = await topics.post({ uid: adminUid, title: 'topic 1', content: 'content 1', cid: categoryObj.cid }); + await topics.reply({ uid: adminUid, content: 'reply 1 content', tid: t.topicData.tid }); + await topics.reply({ uid: adminUid, content: 'reply 2 content', tid: t.topicData.tid }); + const index = await socketTopics.getMyNextPostIndex({ uid: adminUid }, { tid: t.topicData.tid, index: 1, sort: 'oldest_to_newest' }); + assert.strictEqual(index, 1); + }); + + it('should get users next post index in topic by wrapping around', async () => { + const cat = await categories.create({ name: 'tag category' }); + const t = await topics.post({ uid: adminUid, title: 'topic 1', content: 'content 1', cid: cat.cid }); + await topics.reply({ uid: adminUid, content: 'reply 1 content', tid: t.topicData.tid }); + await topics.reply({ uid: adminUid, content: 'reply 2 content', tid: t.topicData.tid }); + let index = await socketTopics.getMyNextPostIndex({ uid: adminUid }, { tid: t.topicData.tid, index: 2, sort: 'oldest_to_newest' }); + assert.strictEqual(index, 2); + index = await socketTopics.getMyNextPostIndex({ uid: adminUid }, { tid: t.topicData.tid, index: 3, sort: 'oldest_to_newest' }); + assert.strictEqual(index, 1); + }); + }); + + describe('teasers', () => { let topic1; let topic2; diff --git a/test/user.js b/test/user.js index 1c90031474..21e28f5b3a 100644 --- a/test/user.js +++ b/test/user.js @@ -1508,6 +1508,19 @@ describe('User', () => { assert.strictEqual(sent, 0); }); + it('should get users with single uid', async () => { + const res = await User.digest.getUsersInterval(1); + assert.strictEqual(res, false); + }); + + it('should not send digests', async () => { + const oldValue = meta.config.disableEmailSubsriptions; + meta.config.disableEmailSubsriptions = 1; + const res = await User.digest.execute({}); + assert.strictEqual(res, false); + meta.config.disableEmailSubsriptions = oldValue; + }); + it('should not send digests', async () => { await User.digest.execute({ interval: 'month' }); });