From 5b21a8c0fbea622725b44ad31aa52dfadb4d928d Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 18 Jan 2017 06:03:00 +0900 Subject: [PATCH] [Test] Add some tests --- test/api.js | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/test/api.js b/test/api.js index 23116f687..7058f5394 100644 --- a/test/api.js +++ b/test/api.js @@ -365,6 +365,92 @@ describe('API', () => { }); })); }); + + describe('following/delete', () => { + it('フォロー解除できる', () => new Promise(async (done) => { + const hima = await insertHimawari(); + const me = await insertSakurako(); + await db.get('following').insert({ + followee_id: hima._id, + follower_id: me._id + }); + request('/following/delete', { + user_id: hima._id.toString() + }, me).then(res => { + res.should.have.status(204); + done(); + }); + })); + + it('過去にフォロー歴があった状態でフォロー解除できる', () => new Promise(async (done) => { + const hima = await insertHimawari(); + const me = await insertSakurako(); + await db.get('following').insert({ + followee_id: hima._id, + follower_id: me._id, + deleted_at: new Date() + }); + await db.get('following').insert({ + followee_id: hima._id, + follower_id: me._id + }); + request('/following/delete', { + user_id: hima._id.toString() + }, me).then(res => { + res.should.have.status(204); + done(); + }); + })); + + it('フォローしていない場合は怒る', () => new Promise(async (done) => { + const hima = await insertHimawari(); + const me = await insertSakurako(); + request('/following/delete', { + user_id: hima._id.toString() + }, me).then(res => { + res.should.have.status(400); + done(); + }); + })); + + it('存在しないユーザーはフォロー解除できない', () => new Promise(async (done) => { + const me = await insertSakurako(); + request('/following/delete', { + user_id: '000000000000000000000000' + }, me).then(res => { + res.should.have.status(400); + done(); + }); + })); + + it('自分自身はフォロー解除できない', () => new Promise(async (done) => { + const me = await insertSakurako(); + request('/following/delete', { + user_id: me._id.toString() + }, me).then(res => { + res.should.have.status(400); + done(); + }); + })); + + it('空のパラメータで怒られる', () => new Promise(async (done) => { + const me = await insertSakurako(); + request('/following/delete', {}, me).then(res => { + res.should.have.status(400); + done(); + }); + })); + + it('間違ったIDで怒られる', () => new Promise(async (done) => { + const me = await insertSakurako(); + request('/following/delete', { + user_id: 'kyoppie' + }, me).then(res => { + res.should.have.status(400); + done(); + }); + })); + }); }); async function insertSakurako() {