From 3f8f0b8af8dc2dddbde3ddb22a6501419c5bb868 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Tue, 17 Jan 2017 11:20:19 +0900
Subject: [PATCH] [test] refactor

---
 test/api.js | 74 ++++++++++++++++++++++++-----------------------------
 1 file changed, 34 insertions(+), 40 deletions(-)

diff --git a/test/api.js b/test/api.js
index 43a0817050..d776a1a962 100644
--- a/test/api.js
+++ b/test/api.js
@@ -14,6 +14,16 @@ chai.use(chaiHttp);
 const server = require('../built/api/server');
 const db = require('../built/db/mongodb').default;
 
+const request = (endpoint, params, me) => new Promise((ok, ng) => {
+	chai.request(server)
+		.post(endpoint)
+		.set('content-type', 'application/x-www-form-urlencoded')
+		.send(Object.assign({ i: me }, params))
+		.end((err, res) => {
+			ok(res);
+		});
+});
+
 describe('API', () => {
 	// Reset database
 	db.get('users').drop();
@@ -37,45 +47,33 @@ describe('API', () => {
 	let me;
 
 	it('create account', done => {
-		chai.request(server)
-			.post('/signup')
-			.set('content-type', 'application/x-www-form-urlencoded')
-			.send(account)
-			.end((err, res) => {
-				res.should.have.status(200);
-				res.body.should.be.a('object');
-				res.body.should.have.property('username').eql(account.username);
-				done();
-			});
+		request('/signup', account).then(res => {
+			res.should.have.status(200);
+			res.body.should.be.a('object');
+			res.body.should.have.property('username').eql(account.username);
+			done();
+		});
 	});
 
 	it('signin', done => {
-		chai.request(server)
-			.post('/signin')
-			.set('content-type', 'application/x-www-form-urlencoded')
-			.send(account)
-			.end((err, res) => {
-				res.should.have.status(204);
-				me = res.header['set-cookie'][0].match(/i=(!\w+)/)[1];
-				done();
-			});
+		request('/signin', account).then(res => {
+			res.should.have.status(204);
+			me = res.header['set-cookie'][0].match(/i=(!\w+)/)[1];
+			done();
+		});
 	});
 
 	describe('i/update', () => {
 		it('update my name', done => {
 			const myName = '大室櫻子';
-			chai.request(server)
-				.post('/i/update')
-				.set('content-type', 'application/x-www-form-urlencoded')
-				.send(Object.assign({ i: me }, {
-					name: myName
-				}))
-				.end((err, res) => {
-					res.should.have.status(200);
-					res.body.should.be.a('object');
-					res.body.should.have.property('name').eql(myName);
-					done();
-				});
+			request('/i/update', {
+				name: myName
+			}, me).then(res => {
+				res.should.have.status(200);
+				res.body.should.be.a('object');
+				res.body.should.have.property('name').eql(myName);
+				done();
+			});
 		});
 	});
 
@@ -84,15 +82,11 @@ describe('API', () => {
 			const post = {
 				text: 'Hi'
 			};
-			chai.request(server)
-				.post('/posts/create')
-				.set('content-type', 'application/x-www-form-urlencoded')
-				.send(Object.assign({ i: me }, post))
-				.end((err, res) => {
-					res.should.have.status(200);
-					res.body.should.be.a('object');
-					done();
-				});
+			request('/posts/create', post, me).then(res => {
+				res.should.have.status(200);
+				res.body.should.be.a('object');
+				done();
+			});
 		});
 
 		it('reply', () => {