From c8b5c181ffd454a4927e390269d8782e52627d20 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 25 Oct 2016 19:14:49 +0300 Subject: [PATCH] fix flag on redis check if number is returned on tests --- src/database/redis/sorted.js | 12 +++++++++--- src/posts/flags.js | 21 ++++++++++++++++----- test/database/sorted.js | 20 ++++++++++---------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/database/redis/sorted.js b/src/database/redis/sorted.js index 68d2695d1d..576b2fe363 100644 --- a/src/database/redis/sorted.js +++ b/src/database/redis/sorted.js @@ -2,6 +2,8 @@ module.exports = function (redisClient, module) { + var utils = require('../../../public/src/utils'); + var helpers = module.helpers.redis; module.sortedSetAdd = function (key, score, value, callback) { @@ -189,7 +191,9 @@ module.exports = function (redisClient, module) { }; module.sortedSetScore = function (key, value, callback) { - redisClient.zscore(key, value, callback); + redisClient.zscore(key, value, function (err, score) { + callback(err, !err ? parseInt(score, 10) : undefined); + }); }; module.sortedSetsScore = function (keys, value, callback) { @@ -202,7 +206,7 @@ module.exports = function (redisClient, module) { module.isSortedSetMember = function (key, value, callback) { module.sortedSetScore(key, value, function (err, score) { - callback(err, !!score); + callback(err, utils.isNumber(score)); }); }; @@ -289,7 +293,9 @@ module.exports = function (redisClient, module) { } module.sortedSetIncrBy = function (key, increment, value, callback) { - redisClient.zincrby(key, increment, value, callback); + redisClient.zincrby(key, increment, value, function (err, newValue) { + callback(err, !err ? parseInt(newValue, 10) : undefined); + }); }; module.getSortedSetRangeByLex = function (key, min, max, start, count, callback) { diff --git a/src/posts/flags.js b/src/posts/flags.js index 84116346af..9d23ff0380 100644 --- a/src/posts/flags.js +++ b/src/posts/flags.js @@ -62,11 +62,7 @@ module.exports = function (Posts) { ], next); }, function (data, next) { - if (data[1] === 1) { // Only update state on new flag - Posts.updateFlagData(uid, post.pid, { - state: 'open' - }, next); - } + openNewFlag(post.pid, uid, next); } ], function (err) { if (err) { @@ -77,6 +73,21 @@ module.exports = function (Posts) { }); }; + function openNewFlag(pid, uid, callback) { + db.sortedSetScore('posts:flags:count', pid, function (err, count) { + if (err) { + return callback(err); + } + if (count === 1) { // Only update state on new flag + Posts.updateFlagData(uid, pid, { + state: 'open' + }, callback); + } else { + callback(); + } + }); + } + function hasFlagged(pid, uid, callback) { db.isSortedSetMember('pid:' + pid + ':flag:uids', uid, callback); } diff --git a/test/database/sorted.js b/test/database/sorted.js index 9d2d083882..dc57c8e0e0 100644 --- a/test/database/sorted.js +++ b/test/database/sorted.js @@ -368,7 +368,7 @@ describe('Sorted Set methods', function () { it('should return false if sorted set does not exist', function (done) { db.isSortedSetMember('doesnotexist', 'value1', function (err, isMember) { - assert.equal(err, null); + assert.ifError(err); assert.equal(arguments.length, 2); assert.equal(isMember, false); done(); @@ -377,7 +377,7 @@ describe('Sorted Set methods', function () { it('should return false if element is not in sorted set', function (done) { db.isSortedSetMember('sorted2', 'value5', function (err, isMember) { - assert.equal(err, null); + assert.ifError(err); assert.equal(arguments.length, 2); assert.equal(isMember, false); done(); @@ -386,17 +386,17 @@ describe('Sorted Set methods', function () { it('should return true if element is in sorted set', function (done) { db.isSortedSetMember('sortedSetTest1', 'value2', function (err, isMember) { - assert.equal(err, null); + assert.ifError(err); assert.equal(arguments.length, 2); - assert.deepEqual(isMember, true); + assert.strictEqual(isMember, true); done(); }); }); - it('should return true if element is in sorted set with score 0', function (done) { + it('should return true if element is in sorted set with sre 0', function (done) { db.isSortedSetMember('zeroscore', 'itemwithzeroscore', function (err, isMember) { assert.ifError(err); - assert.deepEqual(isMember, true); + assert.strictEqual(isMember, true); done(); }); }); @@ -476,10 +476,10 @@ describe('Sorted Set methods', function () { db.sortedSetIncrBy('sortedIncr', 1, 'field1', function (err, newValue) { assert.equal(err, null); assert.equal(arguments.length, 2); - assert.equal(newValue, 1); + assert.strictEqual(newValue, 1); db.sortedSetScore('sortedIncr', 'field1', function (err, score) { assert.equal(err, null); - assert.equal(score, 1); + assert.strictEqual(score, 1); done(); }); }); @@ -489,10 +489,10 @@ describe('Sorted Set methods', function () { db.sortedSetIncrBy('sortedIncr', 5, 'field1', function (err, newValue) { assert.equal(err, null); assert.equal(arguments.length, 2); - assert.equal(newValue, 6); + assert.strictEqual(newValue, 6); db.sortedSetScore('sortedIncr', 'field1', function (err, score) { assert.equal(err, null); - assert.equal(score, 6); + assert.strictEqual(score, 6); done(); }); });