Skip to content

Commit

Permalink
Add saved pins GET and POST with Tests. Set up test environment
Browse files Browse the repository at this point in the history
  • Loading branch information
mallek committed Jan 31, 2018
1 parent 46b5412 commit dd96cd0
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 0 deletions.
2 changes: 2 additions & 0 deletions config/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
if (process.env.NODE_ENV === 'production') {
module.exports = require('./prod.config.js');
} else if (process.env.NODE_ENV === 'test') {
module.exports = require('./test.config.js');
} else {
module.exports = require('./dev.config.js');
}
9 changes: 9 additions & 0 deletions config/test.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const SECRETS = require('./secrets.json'); // nodejs will auto read json

module.exports = {
NODE_ENV: process.env.NODE_ENV || 'development',
HOST: process.env.HOST || 'http://localhost',
PORT: process.env.PORT || 8081,
DB_URL: `${SECRETS.mongodb_dev.db_url}test`,
GOOGLE_API_KEY: SECRETS.google_maps.api_key,
};
23 changes: 23 additions & 0 deletions controllers/saved-pins-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,26 @@ const SavedPins = require('../models/saved-pins');
/**
* TODO - export functions to be used for completing requests in ../routes/search.js
*/

exports.getSavedPins = (appReq, appRes) => {
SavedPins.find().then((savedPins) => {
appRes.send({ savedPins });
}, (e) => {
appRes.status(400).send(e);
});
};

exports.postSavedPins = (appReq, appRes) => {
const savedPin = new SavedPins({
lat: appReq.body.lat,
lng: appReq.body.lng,
place_id: appReq.body.place_id,
});

savedPin.save().then((pin) => {
appRes.send(pin);
}, (e) => {
appRes.status(400).send(e);
});
};

2 changes: 2 additions & 0 deletions routes/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ router.get('/', (req, res) => {
res.send('NOT IMPLEMENTED: Search View');
});

router.get('/savedpins', savedPinsController.getSavedPins);
router.post('/savedpins', savedPinsController.postSavedPins);
module.exports = router;
55 changes: 55 additions & 0 deletions tests/savedPins.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// api routes tests
const request = require('supertest');

const app = require('../app');
const SavedPins = require('../models/saved-pins');

beforeEach((done) => {
SavedPins.remove({}).then(() => done());
});

describe('Saved Pins Routes', () => {
it('should create new saved pin', (done) => {
const pin = new SavedPins({
lat: 1,
lng: 2,
place_id: 'testing',
});

request(app)
.post('/search/savedpins')
.send(pin)
.expect(200)
.expect((res) => {
expect(res.body.lat).to.equal(pin.lat);
})
.end((err, res) => {
if (err) {
return done(err);
}

SavedPins.find().then((savedPins) => {
expect(savedPins.length).to.equal(1);
expect(savedPins[0].lat).to.equal(pin.lat);
done();
}).catch(e => done(e));
});
});

it('should not create savedPin with invalid body data', (done) => {
request(app)
.post('/search/savedpins')
.send({})
.expect(400)
.end((err, res) => {
if (err) {
return done(err);
}

SavedPins.find().then((savedPins) => {
expect(savedPins.length).to.equal(0);
done();
}).catch(e => done(e));
});
});
});

0 comments on commit dd96cd0

Please sign in to comment.