fix flag on redis

check if number is returned on tests
v1.18.x
barisusakli 9 years ago
parent d002c3eb76
commit c8b5c181ff

@ -2,6 +2,8 @@
module.exports = function (redisClient, module) { module.exports = function (redisClient, module) {
var utils = require('../../../public/src/utils');
var helpers = module.helpers.redis; var helpers = module.helpers.redis;
module.sortedSetAdd = function (key, score, value, callback) { module.sortedSetAdd = function (key, score, value, callback) {
@ -189,7 +191,9 @@ module.exports = function (redisClient, module) {
}; };
module.sortedSetScore = function (key, value, callback) { 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) { module.sortedSetsScore = function (keys, value, callback) {
@ -202,7 +206,7 @@ module.exports = function (redisClient, module) {
module.isSortedSetMember = function (key, value, callback) { module.isSortedSetMember = function (key, value, callback) {
module.sortedSetScore(key, value, function (err, score) { 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) { 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) { module.getSortedSetRangeByLex = function (key, min, max, start, count, callback) {

@ -62,11 +62,7 @@ module.exports = function (Posts) {
], next); ], next);
}, },
function (data, next) { function (data, next) {
if (data[1] === 1) { // Only update state on new flag openNewFlag(post.pid, uid, next);
Posts.updateFlagData(uid, post.pid, {
state: 'open'
}, next);
}
} }
], function (err) { ], function (err) {
if (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) { function hasFlagged(pid, uid, callback) {
db.isSortedSetMember('pid:' + pid + ':flag:uids', uid, callback); db.isSortedSetMember('pid:' + pid + ':flag:uids', uid, callback);
} }

@ -368,7 +368,7 @@ describe('Sorted Set methods', function () {
it('should return false if sorted set does not exist', function (done) { it('should return false if sorted set does not exist', function (done) {
db.isSortedSetMember('doesnotexist', 'value1', function (err, isMember) { db.isSortedSetMember('doesnotexist', 'value1', function (err, isMember) {
assert.equal(err, null); assert.ifError(err);
assert.equal(arguments.length, 2); assert.equal(arguments.length, 2);
assert.equal(isMember, false); assert.equal(isMember, false);
done(); done();
@ -377,7 +377,7 @@ describe('Sorted Set methods', function () {
it('should return false if element is not in sorted set', function (done) { it('should return false if element is not in sorted set', function (done) {
db.isSortedSetMember('sorted2', 'value5', function (err, isMember) { db.isSortedSetMember('sorted2', 'value5', function (err, isMember) {
assert.equal(err, null); assert.ifError(err);
assert.equal(arguments.length, 2); assert.equal(arguments.length, 2);
assert.equal(isMember, false); assert.equal(isMember, false);
done(); done();
@ -386,17 +386,17 @@ describe('Sorted Set methods', function () {
it('should return true if element is in sorted set', function (done) { it('should return true if element is in sorted set', function (done) {
db.isSortedSetMember('sortedSetTest1', 'value2', function (err, isMember) { db.isSortedSetMember('sortedSetTest1', 'value2', function (err, isMember) {
assert.equal(err, null); assert.ifError(err);
assert.equal(arguments.length, 2); assert.equal(arguments.length, 2);
assert.deepEqual(isMember, true); assert.strictEqual(isMember, true);
done(); 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) { db.isSortedSetMember('zeroscore', 'itemwithzeroscore', function (err, isMember) {
assert.ifError(err); assert.ifError(err);
assert.deepEqual(isMember, true); assert.strictEqual(isMember, true);
done(); done();
}); });
}); });
@ -476,10 +476,10 @@ describe('Sorted Set methods', function () {
db.sortedSetIncrBy('sortedIncr', 1, 'field1', function (err, newValue) { db.sortedSetIncrBy('sortedIncr', 1, 'field1', function (err, newValue) {
assert.equal(err, null); assert.equal(err, null);
assert.equal(arguments.length, 2); assert.equal(arguments.length, 2);
assert.equal(newValue, 1); assert.strictEqual(newValue, 1);
db.sortedSetScore('sortedIncr', 'field1', function (err, score) { db.sortedSetScore('sortedIncr', 'field1', function (err, score) {
assert.equal(err, null); assert.equal(err, null);
assert.equal(score, 1); assert.strictEqual(score, 1);
done(); done();
}); });
}); });
@ -489,10 +489,10 @@ describe('Sorted Set methods', function () {
db.sortedSetIncrBy('sortedIncr', 5, 'field1', function (err, newValue) { db.sortedSetIncrBy('sortedIncr', 5, 'field1', function (err, newValue) {
assert.equal(err, null); assert.equal(err, null);
assert.equal(arguments.length, 2); assert.equal(arguments.length, 2);
assert.equal(newValue, 6); assert.strictEqual(newValue, 6);
db.sortedSetScore('sortedIncr', 'field1', function (err, score) { db.sortedSetScore('sortedIncr', 'field1', function (err, score) {
assert.equal(err, null); assert.equal(err, null);
assert.equal(score, 6); assert.strictEqual(score, 6);
done(); done();
}); });
}); });

Loading…
Cancel
Save