Skip to content

Commit

Permalink
Merge d9e362f into a209592
Browse files Browse the repository at this point in the history
  • Loading branch information
akhilome committed Sep 6, 2018
2 parents a209592 + d9e362f commit d4fb2a7
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 0 deletions.
12 changes: 12 additions & 0 deletions server/controllers/orderController.js
Expand Up @@ -4,6 +4,18 @@ class OrderController {
static getAllOrders(req, res) {
res.status(200).json({ orders });
}

static getOrder(req, res) {
const { order } = req;

if (!order) {
return res.status(404).json({
error: 'That order doesn\'t exist',
});
}

return res.status(200).json(order);
}
}

export default OrderController;
10 changes: 10 additions & 0 deletions server/middleware/findSingleOrder.js
@@ -0,0 +1,10 @@
import orders from '../db/orders';

const findOrder = (req, res, next) => {
let { id } = req.params;
id = Number(id);
req.order = orders.find(order => order.id === id);
next();
};

export default findOrder;
2 changes: 2 additions & 0 deletions server/routes/routes.js
@@ -1,5 +1,6 @@
import express from 'express';
import OrderController from '../controllers/orderController';
import findOrder from '../middleware/findSingleOrder';

const router = express.Router();

Expand All @@ -10,5 +11,6 @@ router.get('/', (req, res) => {
});

router.get('/orders', OrderController.getAllOrders);
router.get('/orders/:id', findOrder, OrderController.getOrder);

export default router;
42 changes: 42 additions & 0 deletions tests/routes/routes.spec.js
Expand Up @@ -3,6 +3,7 @@ import 'chai/register-should';
import dirtyChai from 'dirty-chai';
import chaiHttp from 'chai-http';
import app from '../../server/index';
import orders from '../../server/db/orders';

chai.use(chaiHttp);
chai.use(dirtyChai);
Expand Down Expand Up @@ -57,3 +58,44 @@ describe('GET /api/v1/orders/', () => {
});
});
});

describe('GET /api/v1/orders/<orderId>', () => {
const id = {
valid: undefined,
invalid: undefined,
};
const keys = ['id', 'author', 'title', 'status', 'date'];

before(() => {
id.valid = Math.ceil(Math.random() * orders.length);
id.invalid = orders.length + 1;
});

it('should respond with status 200 if order is found', (done) => {
chai.request(app)
.get(`/api/v1/orders/${id.valid}`)
.end((err, res) => {
res.should.have.status(200);
done();
});
});

it('should respond with status 404 and an error message if order is not found', (done) => {
chai.request(app)
.get(`/api/v1/orders/${id.invalid}`)
.end((err, res) => {
res.should.have.status(404);
res.body.should.be.an('object').that.has.property('error');
done();
});
});

it('should respond with an object having correct data', (done) => {
chai.request(app)
.get(`/api/v1/orders/${id.valid}`)
.end((err, res) => {
res.body.should.be.an('object').which.has.all.keys(keys);
done();
});
});
});

0 comments on commit d4fb2a7

Please sign in to comment.