diff --git a/public/src/app.js b/public/src/app.js index 665a705649..8ac3e1ebff 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -631,12 +631,12 @@ app.cacheBuster = null; return; } - templates.parse('partials/cookie-consent', config.cookies, function(html) { + templates.parse('partials/cookie-consent', config.cookies, function (html) { $(document.body).append(html); var warningEl = $('.cookie-consent'); var dismissEl = warningEl.find('button'); - dismissEl.on('click', function() { + dismissEl.on('click', function () { // Save consent cookie and remove warning element var now = new Date(); window.localStorage.setItem('cookieconsent', '1'); diff --git a/src/notifications.js b/src/notifications.js index 6c6c8f7aed..c70c0cbb0a 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -464,7 +464,7 @@ var utils = require('../public/src/utils'); notifications[modifyIndex].bodyShort = '[[' + mergeId + '_multiple, ' + usernames[0] + ', ' + (numUsers - 1) + titleEscaped + ']]'; } - notifications[modifyIndex].path = set[0].path; + notifications[modifyIndex].path = set[set.length - 1].path; break; case 'new_register': diff --git a/test/notifications.js b/test/notifications.js index 7a3c82382e..3eebe656bb 100644 --- a/test/notifications.js +++ b/test/notifications.js @@ -3,6 +3,7 @@ var assert = require('assert'); +var async = require('async'); var db = require('./mocks/databasemock'); var user = require('../src/user'); @@ -96,6 +97,76 @@ describe('Notifications', function () { }); }); + it('should link to the first unread post in a watched topic', function (done) { + var categories = require('../src/categories'); + var topics = require('../src/topics'); + + var watcherUid; + var cid; + var tid; + var pid; + + async.waterfall([ + function (next) { + user.create({username: 'watcher'}, next); + }, + function (_watcherUid, next) { + watcherUid = _watcherUid; + + categories.create({ + name: 'Test Category', + description: 'Test category created by testing script' + }, next); + }, + function (category, next) { + cid = category.cid; + + topics.post({ + uid: watcherUid, + cid: cid, + title: 'Test Topic Title', + content: 'The content of test topic' + }, next); + }, + function (topic, next) { + tid = topic.topicData.tid; + + topics.follow(tid, watcherUid, next); + }, + function (next) { + topics.reply({ + uid: uid, + content: 'This is the first reply.', + tid: tid + }, next); + }, + function (post, next) { + pid = post.pid; + + topics.reply({ + uid: uid, + content: 'This is the second reply.', + tid: tid + }, next); + }, + function (post, next) { + // notifications are sent asynchronously with a 1 second delay. + setTimeout(next, 3000); + }, + function (next) { + user.notifications.get(watcherUid, next); + }, + function (notifications, next) { + assert.equal(notifications.unread.length, 1, 'there should be 1 unread notification'); + assert.equal('/post/' + pid, notifications.unread[0].path, 'the notification should link to the first unread post'); + next(); + } + ], function (err) { + assert.ifError(err); + done(); + }); + }); + after(function (done) { db.emptydb(done); });