Skip to content

Commit d4f26fe

Browse files
committed
Sets up babel
- Adds babel setup - Moves app.js to server folder - Moves bin folder to server folder
1 parent f590b61 commit d4f26fe

19 files changed

+177
-112
lines changed

.babelrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"presets": [
3+
["@babel/preset-env", {
4+
"useBuiltIns": "usage",
5+
"corejs": 3,
6+
}]
7+
],
8+
"plugins": ["@babel/plugin-transform-runtime"]
9+
}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ package-lock.json
44
.env
55
.nyc_output
66
coverage
7-
.DS_Store
7+
.DS_Store
8+
build

app.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "postgres-express-node",
3+
"scripts": {},
4+
"env": {
5+
"NODE_ENV": {
6+
"required": true
7+
},
8+
"PORT": {
9+
"required": true
10+
},
11+
"SECRET_KEY": {
12+
"required": true
13+
},
14+
"DATABASE_URL": {
15+
"required": true
16+
}
17+
},
18+
"formation": {
19+
"web": {
20+
"quantity": 1
21+
}
22+
},
23+
"addons": [
24+
"heroku-postgresql"
25+
],
26+
"buildpacks": [
27+
{
28+
"url": "heroku/nodejs"
29+
}
30+
],
31+
"stack": "heroku-18"
32+
}

package.json

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
"name": "postgres-express-node",
33
"version": "1.0.0",
44
"description": "Setting up a todo list backend",
5-
"main": "index.js",
5+
"main": "build/bin/www",
66
"scripts": {
7-
"start": "node ./bin/www",
8-
"start:dev": "nodemon ./bin/www",
9-
"test": "NODE_ENV=test npm run reset:db && NODE_ENV=test nyc mocha --timeout 5000 server/tests/**/*.spec.js",
7+
"start": "node build/bin/www",
8+
"start:dev": "nodemon --exec babel-node -- server/bin/www",
9+
"build": "rm -rf build && babel server -d build --copy-files",
10+
"test": "NODE_ENV=test npm run reset:db && NODE_ENV=test nyc mocha --require @babel/register --timeout 5000 server/tests/**/*.spec.js",
1011
"migrate": "sequelize db:migrate",
1112
"reset:db": "sequelize db:migrate:undo:all && npm run migrate",
1213
"coveralls-coverage": "nyc report --reporter=text-lcov | coveralls",
@@ -23,6 +24,7 @@
2324
"**/*.spec.js",
2425
"coverage",
2526
"dist",
27+
"build",
2628
"server/tests",
2729
"server/migrations",
2830
".eslintrc.js"
@@ -37,9 +39,11 @@
3739
"author": "Ryan Wire",
3840
"license": "ISC",
3941
"dependencies": {
42+
"@babel/runtime": "^7.5.5",
4043
"bcrypt": "^3.0.6",
4144
"body-parser": "^1.19.0",
4245
"celebrate": "^10.0.1",
46+
"core-js": "^3.2.1",
4347
"cors": "^2.8.5",
4448
"dotenv": "^8.0.0",
4549
"express": "^4.17.1",
@@ -52,6 +56,12 @@
5256
"sequelize": "^5.8.9"
5357
},
5458
"devDependencies": {
59+
"@babel/cli": "^7.5.5",
60+
"@babel/core": "^7.5.5",
61+
"@babel/node": "^7.5.5",
62+
"@babel/plugin-transform-runtime": "^7.5.5",
63+
"@babel/preset-env": "^7.5.5",
64+
"@babel/register": "^7.5.5",
5565
"chai": "^4.2.0",
5666
"chai-http": "^4.3.0",
5767
"coveralls": "^3.0.6",

app.js renamed to server/app.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
const express = require('express');
2-
const cors = require('cors');
3-
const logger = require('morgan');
4-
const bodyParser = require('body-parser');
5-
const passport = require('passport');
6-
require('dotenv').config();
7-
const joiErrors = require('./server/middlewares/joiErrors');
1+
import express from 'express';
2+
import cors from 'cors';
3+
import logger from 'morgan';
4+
import bodyParser from 'body-parser';
5+
import passport from 'passport';
6+
import dotenv from 'dotenv';
7+
import joiErrors from './middlewares/joiErrors';
88

99
// Require our routes and passport into the application
10-
const todosRouter = require('./server/routes').todosRouter();
11-
const authRouter = require('./server/routes').authRouter();
12-
const usersRouter = require('./server/routes').usersRouter();
13-
const { passportAuth } = require('./server/config/passport');
10+
import { todosRouter, authRouter, usersRouter } from './routes';
11+
import { passportAuth } from './config/passport';
1412

13+
dotenv.config();
1514
passportAuth(passport);
1615

1716
const apiPrefix = '/api';
@@ -33,9 +32,9 @@ app.use(bodyParser.json());
3332
app.use(bodyParser.urlencoded({ extended: false }));
3433

3534
app.use(apiPrefix, passport.authenticate('jwt', { session: false }));
36-
app.use(apiPrefix, usersRouter);
37-
app.use(apiPrefix, todosRouter);
38-
app.use(authRouter);
35+
app.use(apiPrefix, usersRouter());
36+
app.use(apiPrefix, todosRouter());
37+
app.use(authRouter());
3938

4039
app.use(joiErrors);
4140

File renamed without changes.

server/tests/integration/authRouter.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const chai = require('chai');
22

33
const { expect } = chai;
44
const chaiHttp = require('chai-http');
5-
const app = require('../../../app');
5+
const app = require('../../app');
66
const { deleteTestUser } = require('../utils');
77

88
chai.use(chaiHttp);

server/tests/integration/server.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const chai = require('chai');
22

33
const { expect } = chai;
44
const chaiHttp = require('chai-http');
5-
const app = require('../../../app');
5+
const app = require('../../app');
66

77
chai.use(chaiHttp);
88

server/tests/integration/todoRouter.spec.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ const chai = require('chai');
22

33
const { expect } = chai;
44
const chaiHttp = require('chai-http');
5-
const app = require('../../../app');
5+
const app = require('../../app');
66
const { deleteTestUser, tokenInvalid } = require('../utils');
77

88
chai.use(chaiHttp);
99

10+
let token;
11+
let res2;
12+
1013
describe('TodoRouter', () => {
1114
before(async () => {
1215
await chai
@@ -80,7 +83,7 @@ describe('TodoRouter', () => {
8083
it('Should return 200 when a single todo is fetched', async () => {
8184
const res = await chai
8285
.request(app).get(`/api/todos/${res2.body.id}`)
83-
.set('Authorization', `Bearer ${token}`)
86+
.set('Authorization', `Bearer ${token}`);
8487

8588
expect(res).to.have.status(200);
8689
expect(res.body).to.include.keys('id', 'title', 'UserId', 'updatedAt', 'createdAt');
@@ -89,7 +92,7 @@ describe('TodoRouter', () => {
8992
it('Should return 200 when all todos are fetched', async () => {
9093
const res = await chai
9194
.request(app).get('/api/todos/')
92-
.set('Authorization', `Bearer ${token}`)
95+
.set('Authorization', `Bearer ${token}`);
9396

9497
expect(res).to.have.status(200);
9598
expect(res.body.data).to.be.a('array');
@@ -98,7 +101,7 @@ describe('TodoRouter', () => {
98101
it('Should return 200 when all todos are fetched with pagination query params', async () => {
99102
const res = await chai
100103
.request(app).get('/api/todos/?limit=1&page=1')
101-
.set('Authorization', `Bearer ${token}`)
104+
.set('Authorization', `Bearer ${token}`);
102105

103106
expect(res).to.have.status(200);
104107
expect(res.body.data).to.be.a('array');
@@ -107,7 +110,7 @@ describe('TodoRouter', () => {
107110
it('Should return 200 when all todos are fetched with incorrect(negative) page query param', async () => {
108111
const res = await chai
109112
.request(app).get('/api/todos/?page=-1')
110-
.set('Authorization', `Bearer ${token}`)
113+
.set('Authorization', `Bearer ${token}`);
111114

112115
expect(res).to.have.status(200);
113116
expect(res.body.data).to.be.a('array');
@@ -116,7 +119,7 @@ describe('TodoRouter', () => {
116119
it('Should return 200 when all todos are fetched with incorrect(negative) limit query param', async () => {
117120
const res = await chai
118121
.request(app).get('/api/todos/?limit=-1')
119-
.set('Authorization', `Bearer ${token}`)
122+
.set('Authorization', `Bearer ${token}`);
120123

121124
expect(res).to.have.status(200);
122125
expect(res.body.data).to.be.a('array');
@@ -150,7 +153,7 @@ describe('TodoRouter', () => {
150153
it('Should return 404 when a todo does not exist', async () => {
151154
const res = await chai
152155
.request(app)
153-
.delete(`/api/todos/10000`)
156+
.delete('/api/todos/10000')
154157
.set('Authorization', `Bearer ${token}`);
155158

156159
expect(res).to.have.status(404);
@@ -160,15 +163,15 @@ describe('TodoRouter', () => {
160163

161164
describe('Todo Items actions', () => {
162165
it('Should return 201 when a todo item is created successfully', async () => {
163-
const res2 = await chai
166+
const res3 = await chai
164167
.request(app)
165168
.post('/api/todos')
166169
.set('Authorization', `Bearer ${token}`)
167170
.send({ title: 'I took Killgrave down' });
168171

169172
const res = await chai
170173
.request(app)
171-
.post(`/api/todos/${res2.body.id}/items`)
174+
.post(`/api/todos/${res3.body.id}/items`)
172175
.set('Authorization', `Bearer ${token}`)
173176
.send({ content: 'I beat the hell out of Luke Cage' });
174177

@@ -177,21 +180,21 @@ describe('TodoRouter', () => {
177180
});
178181

179182
it('Should return 204 when a todo item is deleted successfully', async () => {
180-
const res2 = await chai
183+
const resCreate = await chai
181184
.request(app)
182185
.post('/api/todos')
183186
.set('Authorization', `Bearer ${token}`)
184187
.send({ title: 'I took Killgrave down' });
185188

186189
const res3 = await chai
187190
.request(app)
188-
.post(`/api/todos/${res2.body.id}/items`)
191+
.post(`/api/todos/${resCreate.body.id}/items`)
189192
.set('Authorization', `Bearer ${token}`)
190193
.send({ content: 'I beat the hell out of Luke Cage' });
191194

192195
const res = await chai
193196
.request(app)
194-
.delete(`/api/todos/${res2.body.id}/items/${res3.body.id}`)
197+
.delete(`/api/todos/${resCreate.body.id}/items/${res3.body.id}`)
195198
.set('Authorization', `Bearer ${token}`);
196199

197200
expect(res).to.have.status(204);

server/tests/integration/usersRouter.spec.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ const chai = require('chai');
22

33
const { expect } = chai;
44
const chaiHttp = require('chai-http');
5-
const app = require('../../../app');
5+
const app = require('../../app');
66
const { deleteTestUser } = require('../utils');
77

88
chai.use(chaiHttp);
99

10+
let token;
11+
let userId;
12+
1013
describe('A user', () => {
1114
before(async () => {
1215
await chai
@@ -38,5 +41,4 @@ describe('A user', () => {
3841
expect(res).to.have.status(200);
3942
});
4043
});
41-
4244
});

0 commit comments

Comments
 (0)