From 6f497a3bd5fedee272071fc4c9476b792aa91db4 Mon Sep 17 00:00:00 2001
From: Aya Morisawa <AyaMorisawa4869@gmail.com>
Date: Tue, 28 Feb 2017 02:48:37 +0900
Subject: [PATCH] Use TypeScript for tests

---
 package.json              |  2 +-
 test/{api.js => api.ts}   | 28 ++++++++++++----------------
 test/{text.js => text.ts} |  0
 3 files changed, 13 insertions(+), 17 deletions(-)
 rename test/{api.js => api.ts} (98%)
 rename test/{text.js => text.ts} (100%)

diff --git a/package.json b/package.json
index 5b625191e..3d504968f 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
     "clean": "gulp clean",
     "cleanall": "gulp cleanall",
     "lint": "gulp lint",
-    "test": "mocha --harmony"
+    "test": "mocha --compilers ts:ts-node/register --harmony"
   },
   "dependencies": {
     "@types/bcryptjs": "2.4.0",
diff --git a/test/api.js b/test/api.ts
similarity index 98%
rename from test/api.js
rename to test/api.ts
index 0d2a9fea1..334339d40 100644
--- a/test/api.js
+++ b/test/api.ts
@@ -10,26 +10,22 @@ process.env.NODE_ENV = 'test';
 // Display detail of unhandled promise rejection
 process.on('unhandledRejection', console.dir);
 
-// Init babel
-require('babel-core/register');
-require('babel-polyfill');
-
 const fs = require('fs');
-const chai = require('chai');
+const _chai = require('chai');
 const chaiHttp = require('chai-http');
-const should = chai.should();
+const should = _chai.should();
 
-chai.use(chaiHttp);
+_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) => {
+const request = (endpoint, params, me?) => new Promise<any>((ok, ng) => {
 	const auth = me ? {
 		i: me.token
 	} : {};
 
-	chai.request(server)
+	_chai.request(server)
 		.post(endpoint)
 		.send(Object.assign(auth, params))
 		.end((err, res) => {
@@ -52,7 +48,7 @@ describe('API', () => {
 	afterEach(cb => setTimeout(cb, 100));
 
 	it('greet server', done => {
-		chai.request(server)
+		_chai.request(server)
 			.get('/')
 			.end((err, res) => {
 				res.should.have.status(200);
@@ -859,7 +855,7 @@ describe('API', () => {
 	describe('drive/files/create', () => {
 		it('ファイルを作成できる', () => async (done) => {
 			const me = await insertSakurako();
-			chai.request(server)
+			_chai.request(server)
 				.post('/drive/files/create')
 				.field('i', me.token)
 				.attach('file', fs.readFileSync(__dirname + '/resources/Lenna.png'), 'Lenna.png')
@@ -1229,7 +1225,7 @@ describe('API', () => {
 	});
 });
 
-async function insertSakurako(opts) {
+async function insertSakurako(opts?) {
 	return await db.get('users').insert(Object.assign({
 		token: '!00000000000000000000000000000000',
 		username: 'sakurako',
@@ -1239,7 +1235,7 @@ async function insertSakurako(opts) {
 	}, opts));
 }
 
-async function insertHimawari(opts) {
+async function insertHimawari(opts?) {
 	return await db.get('users').insert(Object.assign({
 		token: '!00000000000000000000000000000001',
 		username: 'himawari',
@@ -1249,20 +1245,20 @@ async function insertHimawari(opts) {
 	}, opts));
 }
 
-async function insertDriveFile(opts) {
+async function insertDriveFile(opts?) {
 	return await db.get('drive_files').insert(Object.assign({
 		name: 'strawberry-pasta.png'
 	}, opts));
 }
 
-async function insertDriveFolder(opts) {
+async function insertDriveFolder(opts?) {
 	return await db.get('drive_folders').insert(Object.assign({
 		name: 'my folder',
 		parent_id: null
 	}, opts));
 }
 
-async function insertApp(opts) {
+async function insertApp(opts?) {
 	return await db.get('apps').insert(Object.assign({
 		name: 'my app',
 		secret: 'mysecret'
diff --git a/test/text.js b/test/text.ts
similarity index 100%
rename from test/text.js
rename to test/text.ts