mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-30 10:35:55 +01:00
post tests
This commit is contained in:
@@ -31,25 +31,26 @@ SocketPosts.reply = function (socket, data, callback) {
|
|||||||
data.req = websockets.reqFromSocket(socket);
|
data.req = websockets.reqFromSocket(socket);
|
||||||
data.timestamp = Date.now();
|
data.timestamp = Date.now();
|
||||||
|
|
||||||
topics.reply(data, function (err, postData) {
|
async.waterfall([
|
||||||
if (err) {
|
function (next) {
|
||||||
return callback(err);
|
topics.reply(data, next);
|
||||||
}
|
},
|
||||||
|
function (postData, next) {
|
||||||
var result = {
|
var result = {
|
||||||
posts: [postData],
|
posts: [postData],
|
||||||
'reputation:disabled': parseInt(meta.config['reputation:disabled'], 10) === 1,
|
'reputation:disabled': parseInt(meta.config['reputation:disabled'], 10) === 1,
|
||||||
'downvote:disabled': parseInt(meta.config['downvote:disabled'], 10) === 1,
|
'downvote:disabled': parseInt(meta.config['downvote:disabled'], 10) === 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
callback(null, postData);
|
next(null, postData);
|
||||||
|
|
||||||
websockets.in('uid_' + socket.uid).emit('event:new_post', result);
|
websockets.in('uid_' + socket.uid).emit('event:new_post', result);
|
||||||
|
|
||||||
user.updateOnlineUsers(socket.uid);
|
user.updateOnlineUsers(socket.uid);
|
||||||
|
|
||||||
socketHelpers.notifyNew(socket.uid, 'newPost', result);
|
socketHelpers.notifyNew(socket.uid, 'newPost', result);
|
||||||
});
|
}
|
||||||
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.getRawPost = function (socket, pid, callback) {
|
SocketPosts.getRawPost = function (socket, pid, callback) {
|
||||||
@@ -120,7 +121,7 @@ SocketPosts.getPidIndex = function (socket, data, callback) {
|
|||||||
|
|
||||||
SocketPosts.getReplies = function (socket, pid, callback) {
|
SocketPosts.getReplies = function (socket, pid, callback) {
|
||||||
if (!utils.isNumber(pid)) {
|
if (!utils.isNumber(pid)) {
|
||||||
return callback(new Error('[[error:invalid-data]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
var postPrivileges;
|
var postPrivileges;
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
|
|||||||
138
test/posts.js
138
test/posts.js
@@ -755,6 +755,144 @@ describe('Post\'s', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('socket methods', function () {
|
||||||
|
|
||||||
|
var pid;
|
||||||
|
before(function (done) {
|
||||||
|
topics.reply({
|
||||||
|
uid: voterUid,
|
||||||
|
tid: topicData.tid,
|
||||||
|
timestamp: Date.now(),
|
||||||
|
content: 'raw content'
|
||||||
|
}, function (err, postData) {
|
||||||
|
assert.ifError(err);
|
||||||
|
pid = postData.pid;
|
||||||
|
privileges.categories.rescind(['read'], cid, 'guests', done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var socketPosts = require('../src/socket.io/posts');
|
||||||
|
it('should error with invalid data', function (done) {
|
||||||
|
socketPosts.reply({uid: 0}, null, function (err) {
|
||||||
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should error with invalid tid', function (done) {
|
||||||
|
socketPosts.reply({uid: 0}, {tid: 0, content: 'derp'}, function (err) {
|
||||||
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail to get raw post because of privilege', function (done) {
|
||||||
|
socketPosts.getRawPost({uid: 0}, pid, function (err) {
|
||||||
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail to get raw post because post is deleted', function (done) {
|
||||||
|
posts.setPostField(pid, 'deleted', 1, function (err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
socketPosts.getRawPost({uid: voterUid}, pid, function (err) {
|
||||||
|
assert.equal(err.message, '[[error:no-post]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get raw post content', function (done) {
|
||||||
|
posts.setPostField(pid, 'deleted', 0, function (err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
socketPosts.getRawPost({uid: voterUid}, pid, function (err, postContent) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(postContent, 'raw content');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get post', function (done) {
|
||||||
|
socketPosts.getPost({uid: voterUid}, pid, function (err, postData) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(postData);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('shold error with invalid data', function (done) {
|
||||||
|
socketPosts.loadMoreBookmarks({uid: voterUid}, {uid: voterUid, after: null}, function (err, postData) {
|
||||||
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load more bookmarks', function (done) {
|
||||||
|
socketPosts.loadMoreBookmarks({uid: voterUid}, {uid: voterUid, after: 0}, function (err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load more user posts', function (done) {
|
||||||
|
socketPosts.loadMoreUserPosts({uid: voterUid}, {uid: voterUid, after: 0}, function (err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load more best posts', function (done) {
|
||||||
|
socketPosts.loadMoreBestPosts({uid: voterUid}, {uid: voterUid, after: 0}, function (err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load more up voted posts', function (done) {
|
||||||
|
socketPosts.loadMoreUpVotedPosts({uid: voterUid}, {uid: voterUid, after: 0}, function (err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should load more down voted posts', function (done) {
|
||||||
|
socketPosts.loadMoreDownVotedPosts({uid: voterUid}, {uid: voterUid, after: 0}, function (err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get post category', function (done) {
|
||||||
|
socketPosts.getCategory({uid: voterUid}, pid, function (err, postCid) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(cid, postCid);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should error with invalid data', function (done) {
|
||||||
|
socketPosts.getPidIndex({uid: voterUid}, null, function (err) {
|
||||||
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get pid index', function (done) {
|
||||||
|
socketPosts.getPidIndex({uid: voterUid}, {pid: pid, tid: topicData.tid, topicPostSort: 'oldest-to-newest'}, function (err, index) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(index, 2);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
after(function (done) {
|
after(function (done) {
|
||||||
db.emptydb(done);
|
db.emptydb(done);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -130,6 +130,13 @@ describe('Topic\'s', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should error if pid is not a number', function (done) {
|
||||||
|
socketPosts.getReplies({uid: 0}, 'abc', function (err) {
|
||||||
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should fail to create new reply with invalid user id', function (done) {
|
it('should fail to create new reply with invalid user id', function (done) {
|
||||||
topics.reply({uid: null, content: 'test post', tid: newTopic.tid}, function (err) {
|
topics.reply({uid: null, content: 'test post', tid: newTopic.tid}, function (err) {
|
||||||
assert.equal(err.message, '[[error:no-privileges]]');
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
|
|||||||
Reference in New Issue
Block a user