不可重复收藏和取消收藏

This commit is contained in:
alsotang 2016-04-20 16:03:29 +08:00
parent 69d47f4866
commit cbebbdae8c
4 changed files with 96 additions and 38 deletions

View File

@ -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();
});
}

View File

@ -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;
});
};

View File

@ -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 () {

View File

@ -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 () {