Skip to content

Commit

Permalink
Merge pull request #56 from andela/ft-get-all-status-170267352
Browse files Browse the repository at this point in the history
 #170267352 Get all status types
  • Loading branch information
shemaeric committed Jan 1, 2020
2 parents 276c932 + c8ac212 commit 9510686
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 2 deletions.
24 changes: 24 additions & 0 deletions src/controllers/StatusController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import Response from '../helpers/Response';
import StatusService from '../services/StatusService';


const { getStatus } = StatusService;
/**
* @exports
* @class StatusController
*/
class StatusController {
/**
* Get all status types
* @static
* @param {object} req request object
* @param {object} res response object
* @memberof SearchController
* @returns {object} data
*/
static async getAllStatus(req, res) {
const status = await getStatus();
return Response.successMessage(req, res, 'Successfully retrieved all status types', status, 200);
}
}
export default StatusController;
4 changes: 2 additions & 2 deletions src/routes/api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import commentRoute from './commentRoute';
import accommodationRoute from './accommodationRoute';
import bookingRouter from './bookingRoute';
import notificationRoute from './notificationRoute';

import searchRouter from './searchRoute';
import statusRouter from './statusRoute';

const router = Router();
router.use('/auth', authRoute);
Expand All @@ -23,7 +23,7 @@ router.use('/users', userRoute);
router.use('/accommodations', accommodationRoute);
router.use('/bookings', bookingRouter);
router.use('/notifications', notificationRoute);

router.use('/search', searchRouter);
router.use('/status', statusRouter);

export default router;
35 changes: 35 additions & 0 deletions src/routes/api/statusRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import express from 'express';
import verifyToken from '../../middlewares/verifyToken';
import isUserVerified from '../../middlewares/isUserVerified';
import StatusController from '../../controllers/StatusController';

const statusRoute = express.Router();

const { getAllStatus } = StatusController;

/**
* @swagger
*
* /status:
* get:
* summary: Get all status types
* tags: [Status]
* parameters:
* - name: token
* in: header
* description: enter token
* required: true
* schema:
* type: string
* responses:
* "200":
* description: Status types retrieved successfully
* "500":
* description: Internal servor error
*/
statusRoute
.get('/',
verifyToken,
isUserVerified,
getAllStatus);
export default statusRoute;
27 changes: 27 additions & 0 deletions src/services/StatusService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { status } from '../database/models';
import CommonQueries from './CommonQueries';


/**
* @exports
* @class StatusService
*/
class StatusService {
/**
* Get all status
* @static
* @description GET /api/v1/status
* @param {object} req request object
* @memberof SearchService
* @returns {object} data
*/
static async getStatus() {
const queryObject = {
attributes: ['id', 'status']
};
const allStatus = await CommonQueries.findAll(status, queryObject);
return allStatus;
}
}

export default StatusService;
58 changes: 58 additions & 0 deletions src/tests/111-statusTests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import chai, { expect } from 'chai';
import chaiHttp from 'chai-http';
import dotenv from 'dotenv';
import app from '../index';
import mockData from './mock/mockData';

chai.use(chaiHttp);
chai.should();

dotenv.config();
let userToken;

describe('Get all Status types functionality tests', () => {
before((done) => {
chai.request(app)
.post('/api/v1/auth/signin')
.send(mockData.testUser)
.end((err, res) => {
userToken = res.body.data;

done(err);
});
});

before((done) => {
chai.request(app)
.get('/api/v1/status')
.set('token', userToken)
.send(mockData.usersSignin)
.end(() => {
done();
});
});

it('should not provide any status if token is invalid', (done) => {
chai.request(app)
.get('/api/v1/status')
.set('token', mockData.invalidToken)
.end((err, res) => {
expect(res.body.message.message).eql('jwt malformed');
res.should.have.status(401);
res.body.should.be.an('object');
done(err);
});
});

it('should get all status', (done) => {
chai.request(app)
.get('/api/v1/status')
.set('token', userToken)
.end((err, res) => {
expect(res.body.message).eql('Successfully retrieved all status types');
res.should.have.status(200);
res.body.should.be.an('object');
done(err);
});
});
});

0 comments on commit 9510686

Please sign in to comment.