more tests

v1.18.x
barisusakli 9 years ago
parent 091f459f5e
commit 1440139903

@ -188,39 +188,37 @@ var plugins = require('./plugins');
return callback(null, []); return callback(null, []);
} }
user.getSettings(uid, function (err, settings) { async.waterfall([
if (err) { function (next) {
return callback(err); user.getSettings(uid, next);
} },
function (settings, next) {
var byVotes = settings.topicPostSort === 'most_votes'; var byVotes = settings.topicPostSort === 'most_votes';
var sets = posts.map(function (post) { var sets = posts.map(function (post) {
return byVotes ? 'tid:' + post.tid + ':posts:votes' : 'tid:' + post.tid + ':posts'; return byVotes ? 'tid:' + post.tid + ':posts:votes' : 'tid:' + post.tid + ':posts';
}); });
var uniqueSets = _.uniq(sets); var uniqueSets = _.uniq(sets);
var method = 'sortedSetsRanks'; var method = 'sortedSetsRanks';
if (uniqueSets.length === 1) { if (uniqueSets.length === 1) {
method = 'sortedSetRanks'; method = 'sortedSetRanks';
sets = uniqueSets[0]; sets = uniqueSets[0];
}
var pids = posts.map(function (post) {
return post.pid;
});
db[method](sets, pids, function (err, indices) {
if (err) {
return callback(err);
} }
var pids = posts.map(function (post) {
return post.pid;
});
db[method](sets, pids, next);
},
function (indices, next) {
for (var i = 0; i < indices.length; ++i) { for (var i = 0; i < indices.length; ++i) {
indices[i] = utils.isNumber(indices[i]) ? parseInt(indices[i], 10) + 1 : 0; indices[i] = utils.isNumber(indices[i]) ? parseInt(indices[i], 10) + 1 : 0;
} }
callback(null, indices); next(null, indices);
}); }
}); ], callback);
}; };
Posts.updatePostVoteCount = function (postData, callback) { Posts.updatePostVoteCount = function (postData, callback) {

@ -104,19 +104,20 @@ User.sendValidationEmail = function (socket, uids, callback) {
return callback(new Error('[[error:email-confirmations-are-disabled]]')); return callback(new Error('[[error:email-confirmations-are-disabled]]'));
} }
user.getUsersFields(uids, ['uid', 'email'], function (err, usersData) { async.waterfall([
if (err) { function (next) {
return callback(err); user.getUsersFields(uids, ['uid', 'email'], next);
},
function (usersData, next) {
async.eachLimit(usersData, 50, function (userData, next) {
if (userData.email && userData.uid) {
user.email.sendValidationEmail(userData.uid, userData.email, next);
} else {
next();
}
}, next);
} }
], callback);
async.eachLimit(usersData, 50, function (userData, next) {
if (userData.email && userData.uid) {
user.email.sendValidationEmail(userData.uid, userData.email, next);
} else {
next();
}
}, callback);
});
}; };
User.sendPasswordResetEmail = function (socket, uids, callback) { User.sendPasswordResetEmail = function (socket, uids, callback) {

@ -390,7 +390,27 @@ describe('Categories', function () {
}); });
}); });
it('should get active users', function (done) {
Categories.create({
name: 'test'
}, function (err, category) {
assert.ifError(err);
Topics.post({
uid: posterUid,
cid: category.cid,
title: 'Test Topic Title',
content: 'The content of test topic'
}, function (err) {
assert.ifError(err);
Categories.getActiveUsers(category.cid, function (err, uids) {
assert.ifError(err);
assert.equal(uids[0], posterUid);
done();
});
});
});
});
after(function (done) { after(function (done) {

@ -829,6 +829,25 @@ describe('Controllers', function () {
}); });
}); });
describe('post redirect', function () {
it('should 404 for invalid pid', function (done) {
request(nconf.get('url') + '/post/fail', function (err, res) {
assert.ifError(err);
assert.equal(res.statusCode, 404);
done();
});
});
it('should return correct post path', function (done) {
request(nconf.get('url') + '/api/post/' + pid, function (err, res, body) {
assert.ifError(err);
assert.equal(res.statusCode, 308);
assert.equal(body, '"/topic/1/test-topic-title/1"');
done();
});
});
});
after(function (done) { after(function (done) {
var analytics = require('../src/analytics'); var analytics = require('../src/analytics');
analytics.writeData(function (err) { analytics.writeData(function (err) {

@ -253,13 +253,45 @@ describe('socket.io', function () {
}); });
}); });
it('should validate emails', function (done) {
describe('validation emails', function () {
var socketAdmin = require('../src/socket.io/admin'); var socketAdmin = require('../src/socket.io/admin');
socketAdmin.user.validateEmail({uid: adminUid}, [regularUid], function (err) { var meta = require('../src/meta');
assert.ifError(err);
user.getUserField(regularUid, 'email:confirmed', function (err, emailConfirmed) { it('should validate emails', function (done) {
socketAdmin.user.validateEmail({uid: adminUid}, [regularUid], function (err) {
assert.ifError(err);
user.getUserField(regularUid, 'email:confirmed', function (err, emailConfirmed) {
assert.ifError(err);
assert.equal(parseInt(emailConfirmed, 10), 1);
done();
});
});
});
it('should error with invalid uids', function (done) {
var socketAdmin = require('../src/socket.io/admin');
socketAdmin.user.sendValidationEmail({uid: adminUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('should error if email validation is not required', function (done) {
var socketAdmin = require('../src/socket.io/admin');
socketAdmin.user.sendValidationEmail({uid: adminUid}, [regularUid], function (err) {
assert.equal(err.message, '[[error:email-confirmations-are-disabled]]');
done();
});
});
it('should send validation email', function (done) {
var socketAdmin = require('../src/socket.io/admin');
meta.config.requireEmailConfirmation = 1;
socketAdmin.user.sendValidationEmail({uid: adminUid}, [regularUid], function (err) {
assert.ifError(err); assert.ifError(err);
assert.equal(parseInt(emailConfirmed, 10), 1); meta.config.requireEmailConfirmation = 0;
done(); done();
}); });
}); });

@ -684,6 +684,29 @@ describe('User', function () {
}); });
}); });
}); });
it('should fail if data is invalid', function (done) {
socketUser.emailExists({uid: testUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('should return true if email exists', function (done) {
socketUser.emailExists({uid: testUid}, {email: 'john@example.com'}, function (err, exists) {
assert.ifError(err);
assert(exists);
done();
});
});
it('should return false if email does not exist', function (done) {
socketUser.emailExists({uid: testUid}, {email: 'does@not.exist'}, function (err, exists) {
assert.ifError(err);
assert(!exists);
done();
});
});
}); });
describe('approval queue', function () { describe('approval queue', function () {

Loading…
Cancel
Save