Skip to content

Commit

Permalink
add testing
Browse files Browse the repository at this point in the history
  • Loading branch information
MoralesJonathan committed Sep 8, 2019
1 parent 4f3b1e6 commit 72d1856
Show file tree
Hide file tree
Showing 11 changed files with 776 additions and 37 deletions.
8 changes: 8 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
language: node_js
node_js:
- "stable"
branches:
only:
- master
cache:
directories:
- node_modules
services:
- mongodb
cache:
directories:
- node_modules
Expand Down
14 changes: 14 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
require('simple-console-colors');
const express = require("express");
const routes = require("./routes");
const app = express();

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

if (process.env.NODE_ENV === "production")
app.use(express.static("client/build"));

app.use(routes);

module.exports = app;
5 changes: 4 additions & 1 deletion controllers/testController.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
const db = require("../models");

module.exports = {
findAll: function(req, res) {
testRoute: (req ,res) => {
res.status(200).send('Route ok!')
},
findAll:(req, res) => {
db.Test
.find(req.query)
.sort({ date: -1 })
Expand Down
19 changes: 15 additions & 4 deletions dbconfig/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,20 @@ const options = {
autoReconnect: true
}

const connect = (URI) =>
mongoose.connect(URI || process.env.MONGODB_URI, options)
.catch(handleError);
const connection = {
connect: () =>
new Promise((resolve, reject) => {
mongoose.connect(process.env.MONGODB_URI || 'mongodb://127.0.0.1:27017/testdb', options)
.then(() => resolve())
.catch(e => {
handleError(e);
reject(e);
});
}),
disconnect: () => {
mongoose.connection.close();
}
}

mongoose.connection.on('error', handleError);
mongoose.connection.on('connecting', () => console.info('Starting to make initial connection to the MongoDB server...'));
Expand All @@ -22,4 +33,4 @@ mongoose.connection.on('disconnected', () => console.warn('Mongoose lost connect
mongoose.connection.on('reconnected', () => console.info('Mongoose successfully reconnected to MongoDB server.'));
mongoose.connection.on('reconnectFailed', () => console.error('Mongoose was unable to successfully reconnect to MongoDB server. No further attempts will be made.'));

module.exports = connect;
module.exports = connection;
3 changes: 3 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
testEnvironment: 'node'
};
9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,23 @@
"babel-loader": "^8.0.6",
"concurrently": "^4.1.0",
"dotenv": "^6.2.0",
"jest": "^24.9.0",
"nodemon": "^1.18.7",
"storybook-addon-styled-component-theme": "^1.2.4"
"storybook-addon-styled-component-theme": "^1.2.4",
"supertest": "^4.0.2"
},
"scripts": {
"start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev",
"start:prod": "node server.js",
"start:dev": "concurrently \"nodemon --ignore 'client/*'\" \"npm run client\"",
"client": "cd client && npm run start",
"seed": "node scripts/seedDB.js",
"seedTest": "node scripts/seedTestDB.js",
"install": "cd client && npm install",
"build": "cd client && npm run build",
"heroku-postbuild": "npm run build",
"storybook": "start-storybook",
"build-storybook": "build-storybook"
"build-storybook": "build-storybook",
"test": "if-env NODE_ENV=test && npm run seed && jest test/server.test.js || jest test/server.test.js"
},
"eslintConfig": {
"extends": "react-app"
Expand Down
8 changes: 5 additions & 3 deletions routes/api/test.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
const router = require("express").Router();
const testController = require("../../controllers/testController");

router
.route("/")
.get(testController.findAll)
router.route("/")
.get(testController.testRoute);

router.route('/db')
.get(testController.findAll);

module.exports = router;
10 changes: 7 additions & 3 deletions scripts/seedDB.js → scripts/seedTestDB.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
require("../dbconfig/connection.js")();
const mongooseConnection = require("../dbconfig/connection.js");
const db = require("../models");

( async () => {
await mongooseConnection.connect();
const randomHour = () => 3600000*(Math.random() * (10 - 1) + 1);
const seed = [
{
Expand All @@ -18,13 +19,16 @@ const seed = [
];

db.Test
.remove({})
.deleteMany({})
.then(() => db.Test.collection.insertMany(seed))
.then(data => {
console.log(data.result.n + " records inserted!");
mongooseConnection.disconnect();
process.exit(0);
})
.catch(err => {
console.error(err);
mongooseConnection.disconnect();
process.exit(1);
});
})();
19 changes: 4 additions & 15 deletions server.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
require('simple-console-colors');
const express = require("express");
const routes = require("./routes");
const server = express();
const app = require('./app')
const PORT = process.env.PORT || 3001;
const mongooseConnect = require("./dbconfig/connection.js");
const mongooseConnection = require("./dbconfig/connection.js");

server.use(express.urlencoded({ extended: true }));
server.use(express.json());

if (process.env.NODE_ENV === "production")
server.use(express.static("client/build"));

server.use(routes);

server.listen(PORT, () => {
app.listen(PORT, () => {
console.log(`Server running on PORT ${PORT}!`);
mongooseConnect();
mongooseConnection.connect();
});
29 changes: 29 additions & 0 deletions test/server.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const request = require('supertest');
const app = require('../app');
const mongooseConnection = require("../dbconfig/connection.js");

describe('Test the api route', () => {
it('Should 200 the GET method', async () => {
const response = await request(app).get('/api/test');
expect(response.statusCode).toBe(200);
});
it('Should 404 a random route', async () => {
const response = await request(app).get('/api/nonExistentRoute');
expect(response.statusCode).toBe(404);
});
})

describe('Test the database route', () => {
beforeAll(() => {
return mongooseConnection.connect();
});
afterAll(() => {
return mongooseConnection.disconnect();
});

it('Should return documents from the db test route', async () => {
const response = await request(app).get('/api/test/db');
expect(response.statusCode).toBe(200);
expect(response.body).not.toBeNull();
});
})
Loading

0 comments on commit 72d1856

Please sign in to comment.