mirror of
https://github.com/cnodejs/nodeclub.git
synced 2025-12-08 19:55:55 +00:00
不可重复收藏和取消收藏
This commit is contained in:
parent
69d47f4866
commit
cbebbdae8c
@ -71,7 +71,7 @@ function collect(req, res, next) {
|
||||
return next(err);
|
||||
}
|
||||
if (doc) {
|
||||
res.json({success: true});
|
||||
res.json({success: false});
|
||||
return;
|
||||
}
|
||||
|
||||
@ -113,23 +113,28 @@ function de_collect(req, res, next) {
|
||||
res.status(404);
|
||||
return res.json({success: false, error_msg: '主题不存在'});
|
||||
}
|
||||
TopicCollectProxy.remove(req.user.id, topic._id, function (err) {
|
||||
TopicCollectProxy.remove(req.user.id, topic._id, function (err, removeResult) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
if (removeResult.result.n == 0) {
|
||||
return res.json({success: false})
|
||||
}
|
||||
|
||||
UserProxy.getUserById(req.user.id, function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
user.collect_topic_count -= 1;
|
||||
user.save();
|
||||
});
|
||||
|
||||
topic.collect_count -= 1;
|
||||
topic.save();
|
||||
|
||||
res.json({success: true});
|
||||
});
|
||||
|
||||
UserProxy.getUserById(req.user.id, function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
user.collect_topic_count -= 1;
|
||||
user.save();
|
||||
});
|
||||
|
||||
topic.collect_count -= 1;
|
||||
topic.save();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -380,7 +380,7 @@ exports.collect = function (req, res, next) {
|
||||
return next(err);
|
||||
}
|
||||
if (doc) {
|
||||
res.json({status: 'success'});
|
||||
res.json({status: 'failed'});
|
||||
return;
|
||||
}
|
||||
|
||||
@ -414,25 +414,28 @@ exports.de_collect = function (req, res, next) {
|
||||
if (!topic) {
|
||||
res.json({status: 'failed'});
|
||||
}
|
||||
TopicCollect.remove(req.session.user._id, topic._id, function (err) {
|
||||
TopicCollect.remove(req.session.user._id, topic._id, function (err, removeResult) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
if (removeResult.result.n == 0) {
|
||||
return res.json({status: 'failed'})
|
||||
}
|
||||
|
||||
User.getUserById(req.session.user._id, function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
user.collect_topic_count -= 1;
|
||||
req.session.user = user;
|
||||
user.save();
|
||||
});
|
||||
|
||||
topic.collect_count -= 1;
|
||||
topic.save();
|
||||
|
||||
res.json({status: 'success'});
|
||||
});
|
||||
|
||||
User.getUserById(req.session.user._id, function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
user.collect_topic_count -= 1;
|
||||
user.save();
|
||||
});
|
||||
|
||||
topic.collect_count -= 1;
|
||||
topic.save();
|
||||
|
||||
req.session.user.collect_topic_count -= 1;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@ -4,9 +4,9 @@ var should = require('should');
|
||||
var support = require('../../support/support');
|
||||
|
||||
describe('test/api/v1/topic_collect.test.js', function () {
|
||||
|
||||
|
||||
var mockUser, mockTopic;
|
||||
|
||||
|
||||
before(function (done) {
|
||||
support.createUser(function (err, user) {
|
||||
mockUser = user;
|
||||
@ -82,6 +82,19 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should not collect topic twice', function (done) {
|
||||
request.post('/api/v1/topic_collect/collect')
|
||||
.send({
|
||||
accesstoken: mockUser.accessToken,
|
||||
topic_id: mockTopic.id
|
||||
})
|
||||
.end(function (err, res) {
|
||||
should.not.exists(err);
|
||||
res.body.success.should.false();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail when topic_id is not valid', function (done) {
|
||||
request.post('/api/v1/topic_collect/collect')
|
||||
.send({
|
||||
@ -114,9 +127,9 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 主题被收藏之后
|
||||
describe('after collect topic', function () {
|
||||
|
||||
@ -132,7 +145,7 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('should fail when user not found', function (done) {
|
||||
request.get('/api/v1/topic_collect/' + mockUser.loginname + 'not_found')
|
||||
.end(function (err, res) {
|
||||
@ -142,7 +155,7 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
describe('get /api/v1/topic/:topicid', function () {
|
||||
@ -163,7 +176,7 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 取消收藏主题
|
||||
describe('post /topic_collect/de_collect', function () {
|
||||
|
||||
@ -179,7 +192,7 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('should decollect topic with correct accessToken', function (done) {
|
||||
request.post('/api/v1/topic_collect/de_collect')
|
||||
.send({
|
||||
@ -192,7 +205,20 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('should not decollect topic twice', function (done) {
|
||||
request.post('/api/v1/topic_collect/de_collect')
|
||||
.send({
|
||||
accesstoken: mockUser.accessToken,
|
||||
topic_id: mockTopic.id
|
||||
})
|
||||
.end(function (err, res) {
|
||||
should.not.exists(err);
|
||||
res.body.success.should.false();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail when topic_id is not valid', function (done) {
|
||||
request.post('/api/v1/topic_collect/de_collect')
|
||||
.send({
|
||||
@ -225,9 +251,9 @@ describe('test/api/v1/topic_collect.test.js', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 主题被取消收藏之后
|
||||
describe('after decollect topic', function () {
|
||||
|
||||
|
||||
@ -214,6 +214,18 @@ describe('test/controllers/topic.test.js', function () {
|
||||
done(err);
|
||||
})
|
||||
})
|
||||
|
||||
it('should not collect a topic twice', function (done) {
|
||||
request.post('/topic/collect')
|
||||
.send({
|
||||
topic_id: support.testTopic._id,
|
||||
})
|
||||
.set('Cookie', support.normalUser2Cookie)
|
||||
.expect(200, function (err, res) {
|
||||
res.body.should.eql({status: 'failed'});
|
||||
done(err);
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#de_collect', function () {
|
||||
@ -228,6 +240,18 @@ describe('test/controllers/topic.test.js', function () {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should not decollect a non-exist topic_collect', function (done) {
|
||||
request.post('/topic/de_collect')
|
||||
.send({
|
||||
topic_id: support.testTopic._id,
|
||||
})
|
||||
.set('Cookie', support.normalUser2Cookie)
|
||||
.expect(200, function (err, res) {
|
||||
res.body.should.eql({status: 'failed'});
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('#upload', function () {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user