Skip to content

Commit

Permalink
Merge 40741ff into 8873a16
Browse files Browse the repository at this point in the history
  • Loading branch information
Ileriayo committed Sep 13, 2019
2 parents 8873a16 + 40741ff commit 931722f
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 4 deletions.
24 changes: 24 additions & 0 deletions src/controllers/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,30 @@ export default class RequestController {
}
}

/*
* @param {Object} req
* @param {Object} res
* @returns {Object} res (server response)
* @description get all travel requests
* @description search for request
*/
static async searchRequests(req, res) {
try {
const { query } = req;
const where = {
userId: req.user.id
};
Object.keys(query).forEach((key) => {
where[key] = !Number.isNaN(parseInt(query[key], 10)) ? parseInt(query[key], 10) : query[key];
});
const foundRequests = await Request.findAll({
where
});
return res.status(200).json({ status: 200, data: foundRequests });
} catch (error) {
res.status(500).json({ status: 500, error });
}
}

/**
* @param {Object} req
Expand Down
26 changes: 26 additions & 0 deletions src/docs/swagger.js
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,32 @@ module.exports = {
}
}
},
'/request/search': {
get: {
tags: [
'request'
],
summary: 'Search for a request',
description: '',
consumes: [
'application/json',
],
parameters: [
{
in: 'query',
name: 'column-data e.g., type=one-way&status=approved',
}
],
responses: {
200: {
description: 'successful operation',
schema: {
$ref: '#definitions/UpdateSuccessful',
},
}
}
}
},
'/request/:id': {
patch: {
tags: [
Expand Down
11 changes: 7 additions & 4 deletions src/routes/api/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@ import { Router } from 'express';
import { RequestController } from '../../controllers';
import { tripStatus as validateTripStatus, checkLineManagerId } from '../../middlewares/index';
import validateTripRequest from '../../middlewares/validateTripRequest';
import { checkToken } from '../../middlewares/auth';

const router = Router();


router.get('/', RequestController.getAllRequests);
router.get('/', checkToken, RequestController.getAllRequests);

router.post('/', checkLineManagerId, validateTripRequest, RequestController.createTrip);
router.post('/', checkToken, checkLineManagerId, validateTripRequest, RequestController.createTrip);

router.patch('/:id', validateTripRequest, RequestController.editRequest);
router.get('/search', checkToken, RequestController.searchRequests);

router.patch('/:requestId/status', validateTripStatus, RequestController.updateStatus);
router.patch('/:id', checkToken, validateTripRequest, RequestController.editRequest);

router.patch('/:requestId/status', checkToken, validateTripStatus, RequestController.updateStatus);

export default router;
16 changes: 16 additions & 0 deletions src/tests/request.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,22 @@ describe('GET /api/v1/request', () => {
done();
});
});
it('Should search for requests', (done) => {
chai.request(server)
.get('/api/v1/request/search?type=one-way&status=approved')
.set('Authorization', `Bearer ${token}`)
.end((err, res) => {
// eslint-disable-next-line no-unused-expressions
expect(err).to.be.null;
expect(res).to.has.status(200);
expect(res.body).to.be.a('object');
expect(res.body).to.haveOwnProperty('status');
expect(res.body.status).to.equal(200);
expect(res.body).to.haveOwnProperty('data');
expect(res.body.data).to.be.a('array');
done();
});
});
});
});

Expand Down

0 comments on commit 931722f

Please sign in to comment.