Skip to content

Commit 897818f

Browse files
Start adding tests, fixed couple bugs
1 parent 71de8e6 commit 897818f

6 files changed

Lines changed: 264 additions & 21 deletions

File tree

package-lock.json

Lines changed: 77 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"babel-node": "babel-node --presets=es2015",
88
"nodemon": "nodemon -e pug,js,css --exec npm run babel-node -- src/bin/www",
99
"start": "SET NODE_ENV=dev && npm run nodemon",
10-
"test": "mocha --timeout 10000 --compilers js:babel-register --recursive ./test/"
10+
"test": "mocha --timeout 20000 --compilers js:babel-register --recursive ./test/"
1111
},
1212
"author": "",
1313
"license": "ISC",
@@ -17,9 +17,10 @@
1717
"babel-watch": "^2.0.7",
1818
"babelify": "^8.0.0",
1919
"chai": "^4.1.2",
20+
"chai-http": "^3.0.0",
2021
"concurrently": "^3.5.1",
21-
"nodemon": "^1.9.1",
22-
"mocha": "^5.0.4"
22+
"mocha": "^5.0.4",
23+
"nodemon": "^1.9.1"
2324
},
2425
"dependencies": {
2526
"bcrypt": "^1.0.3",

src/app.js

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@ const User = require('./models/user');
1111
const Course = require('./models/course');
1212
const Review = require('./models/review');
1313

14-
console.log(process.env.NODE_ENV);
1514
const config = require('config');
1615
const dbConfig = config.get('DBHost');
1716

18-
console.log(dbConfig);
1917

2018

2119
const index = require('./routes/index');
20+
const user = require('./routes/user');
2221
const app = express();
2322

2423
//const env = process.env.NODE_ENV || 'dev';
@@ -33,28 +32,21 @@ const db = mongoose.connection;
3332
db.on('error', console.error.bind(console, 'connection error:'));
3433

3534
db.on('connected', function() {
36-
37-
//seeder.seed(data);
38-
39-
40-
4135
seeder.connect(dbConfig, function(){
36+
console.log("seeder connected to Database "+dbConfig);
4237
// Load Mongoose models
4338
seeder.loadModels([
4439
'./src/models/user',
4540
'./src/models/course',
4641
'./src/models/review'
4742
]);
48-
4943
// Clear specified collections
5044
seeder.clearModels(['User', 'Course', 'Review'], function() {
5145
// Callback to populate DB once collections have been cleared
5246
seeder.populateModels(data, function() {
53-
seeder.disconnect();
47+
console.log("Finished seeding Database!");
5448
});
55-
5649
});
57-
console.log("seeder connected to Database!");
5850
});
5951
});
6052

@@ -75,6 +67,7 @@ app.use(cookieParser());
7567
app.use(express.static(path.join(__dirname, 'public')));
7668

7769
app.use('/', index);
70+
app.use('/api/users', user);
7871

7972
// catch 404 and forward to error handler
8073
app.use(function(req, res, next) {
@@ -94,8 +87,4 @@ app.use(function(err, req, res, next) {
9487
res.render('error');
9588
});
9689

97-
98-
99-
100-
101-
module.exports = app;
90+
module.exports = app; //This for testing...

src/routes/index.js

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,58 @@
1-
var express = require('express');
2-
var router = express.Router();
1+
const express = require('express');
2+
const router = express.Router();
3+
const Course = require('../models/course');
4+
const User = require('../models/user');
35

46
/* GET home page. */
57
router.get('/', function(req, res, next) {
68
res.render('index', { title: 'Express' });
79
});
810

11+
router.get('/course', function(req, res, next) {
12+
res.send("hello!");
13+
});
14+
15+
16+
router.post('/course', (req, res, next) => {
17+
if(!req.body.title || !req.body.description){
18+
const err = new Error("Bad Request");
19+
err.status = 400;
20+
return next(err);
21+
//return res.json({body: req.body});
22+
}
23+
24+
const courseData = {
25+
user: req.body.user._id,
26+
title: req.body.title,
27+
description: req.body.description,
28+
estimatedTime: req.body.estimatedTime,
29+
materialsNeeded: req.body.materialsNeeded,
30+
steps: req.body.steps,
31+
reviews: req.body.reviews
32+
};
33+
console.log(courseData);
34+
Course.create(courseData, (err, course) => {
35+
if(err){
36+
console.log("hitting error?");
37+
return next(err);
38+
}
39+
console.log("This shit ever get hit?");
40+
return res.json({message: "Course Successfully added!", course});
41+
});
42+
});
43+
44+
45+
router.post('/user', (req, res, next) => {
46+
console.log("hit the request...");
47+
const userData = req.body;
48+
User.create(userData, (err, user) => {
49+
console.log("got into the create method?!?!");
50+
if (err) {
51+
return next(err);
52+
}
53+
return res.json({message: "User Successfully added!", user});
54+
});
55+
56+
});
57+
958
module.exports = router;

src/routes/user.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var express = require('express');
2+
var router = express.Router();
3+
4+
/* GET home page. */
5+
router.get('/', function(req, res, next) {
6+
res.send('test');
7+
});
8+
9+
10+
11+
module.exports = router;

test/course_test.js

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
//During the test the env variable is set to test
2+
process.env.NODE_ENV = 'test';
3+
4+
const Course = require('../src/models/course');
5+
6+
const chai = require('chai');
7+
const chaiHttp = require('chai-http');
8+
const server = require('../src/app');
9+
const should = chai.should();
10+
11+
chai.use(chaiHttp);
12+
13+
describe('Courses', () => {
14+
//This was causing hanging errors....
15+
// beforeEach((done) => {
16+
// Course.remove({}, (err) => {
17+
// done();
18+
// });
19+
// });
20+
21+
/*
22+
Our GET Tests
23+
*/
24+
25+
describe('/GET course', () => {
26+
it('should GET all the courses', (done) => {
27+
chai.request(server)
28+
.get('/course')
29+
.end((err, res) => {
30+
res.should.have.status(200);
31+
done();
32+
});
33+
34+
});
35+
});
36+
37+
describe('/POST course', () => {
38+
it('should POST a course with proper fields', (done) => {
39+
let course = {
40+
title: "My first title!",
41+
description: "My course description",
42+
user: {
43+
_id: "57029ed4795118be119cc437"
44+
},
45+
steps: [
46+
{
47+
title: "step 1",
48+
description: "My first Step"
49+
}
50+
]
51+
};
52+
chai.request(server)
53+
.post('/course')
54+
.send(course)
55+
.end((err, res) => {
56+
res.should.have.status(200);
57+
res.body.should.be.a('object');
58+
res.body.course.should.have.property('title');
59+
60+
done();
61+
});
62+
63+
64+
});
65+
66+
67+
it('should not POST a course without no fields', (done) => {
68+
let course = {};
69+
postCourse(course, done);
70+
});
71+
72+
it('should not POST a course without title field', (done) => {
73+
let course = {
74+
description: "My course description",
75+
user: {
76+
_id: "57029ed4795118be119cc437"
77+
},
78+
steps: [
79+
{
80+
title: "step 1",
81+
description: "My first Step"
82+
}
83+
]
84+
};
85+
postCourse(course, done);
86+
});
87+
88+
it('should not POST a course without description field', (done) => {
89+
let course = {
90+
title: "my title",
91+
user: {
92+
_id: "57029ed4795118be119cc437"
93+
},
94+
steps: [
95+
{
96+
title: "step 1",
97+
description: "My first Step"
98+
}
99+
]
100+
};
101+
postCourse(course, done);
102+
});
103+
function postCourse(course, done){
104+
chai.request(server)
105+
.post('/course')
106+
.send(course)
107+
.end((err, res) => {
108+
res.should.have.status(400);
109+
110+
done();
111+
});
112+
}
113+
});
114+
115+
116+
});

0 commit comments

Comments
 (0)