Skip to content

Commit

Permalink
Merge pull request #45 from tieme-ndo/fix-other-statistics
Browse files Browse the repository at this point in the history
Respond with totalNumberOfOtherFarmers
  • Loading branch information
Pav0l committed Sep 18, 2019
2 parents 31a0107 + 14c476e commit 22c738e
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
**[Production Deployment](https://t-ndo.herokuapp.com)** <br/>
**[Staging Deployment](https://tndo-temp-staging.herokuapp.com/)**

[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/128f9cfdf87dd2eb709d)
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/e0398fa3da81ee0a9ce2)

## Getting started

Expand Down Expand Up @@ -68,7 +68,7 @@ JWT_SECRET=<generated string>

## Endpoints

**[View API Reference Here](https://documenter.getpostman.com/view/8821479/SVmtzfpW?version=latest)**
**[View API Reference Here]https://documenter.getpostman.com/view/6785535/SVmvUeeT?version=latest**

# Data Model

Expand Down
5 changes: 5 additions & 0 deletions controllers/farmer/statistics.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ const statistics = async (req, res, next) => {
(farmer) => farmer.personalInfo.gender.toLowerCase() === 'male'
).length;

const totalNumOfOtherFarmers = allFarmers.filter(
(farmer) => farmer.personalInfo.gender.toLowerCase() === 'others'
).length;

const farmersAgeGreaterThanOrEqualThirtyFive = allFarmers.filter(
(farmer) => calculateAge(farmer.personalInfo.date_of_birth) >= 35
).length;
Expand All @@ -35,6 +39,7 @@ const statistics = async (req, res, next) => {
totalNumOfFarmers,
totalNumOfMaleFarmers,
totalNumOfFemaleFarmers,
totalNumOfOtherFarmers,
farmersAgeGreaterThanOrEqualThirtyFive,
farmersAgeLesserThanThirtyFive
};
Expand Down
53 changes: 53 additions & 0 deletions tests/farmers.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,59 @@ describe('Farmer route', () => {
});
});

it('It should 200 on GET farmer statistics', (done) => {
chai
.request(server)
.get('/api/v1/farmers/statistic')
.set('Authorization', token)
.end((err, res) => {
res.should.have.status(200);
done(err);
});
});

it('It should return num of M/F/O farmers that add up to total number of farmers', (done) => {
chai
.request(server)
.get('/api/v1/farmers/statistic')
.set('Authorization', token)
.end((err, res) => {
const {
totalNumOfFarmers,
totalNumOfMaleFarmers,
totalNumOfFemaleFarmers,
totalNumOfOtherFarmers
} = res.body;

totalNumOfFarmers.should.equal(
totalNumOfMaleFarmers
+ totalNumOfFemaleFarmers
+ totalNumOfOtherFarmers
);
done(err);
});
});

it('It should return num of <35/>35 y/o farmers that add up to total number of farmers', (done) => {
chai
.request(server)
.get('/api/v1/farmers/statistic')
.set('Authorization', token)
.end((err, res) => {
const {
totalNumOfFarmers,
farmersAgeGreaterThanOrEqualThirtyFive,
farmersAgeLesserThanThirtyFive
} = res.body;

totalNumOfFarmers.should.equal(
farmersAgeGreaterThanOrEqualThirtyFive
+ farmersAgeLesserThanThirtyFive
);
done(err);
});
});

it('It should return 400 bad request and "Not a valid ID" message on bad farmer ID', (done) => {
chai
.request(server)
Expand Down

0 comments on commit 22c738e

Please sign in to comment.