Skip to content
Snippets Groups Projects
Commit 1c461abf authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira Committed by Stephanie Briere Americo
Browse files

Issue #72: Add method to get form answers number

parent 522b5fe3
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 1.2.2 - 07-04-2020
## Added
- Route to return the number of answers in a form #72 (Richard Heise)
## 1.2.1 - 05-03-2020
## Added
- Cors to integrate front-end with back-end #68 (Richard Heise)
......@@ -12,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Minor route order changes on main.ts to make it more intuitive
- Port on config.env from 3000 to 3333 for integration purpose
## 1.2.0 - 19-02-2020
### Changed
- Created a stable version with user
......
{
"name": "form-creator-api",
"version": "1.2.1",
"version": "1.2.2",
"description": "RESTful API used to manage and answer forms.",
"main": "index.js",
"scripts": {
......
......@@ -26,6 +26,7 @@ import { Form, FormOptions} from "../../core/form";
import { FormUpdate, FormUpdateOptions } from "../../core/formUpdate";
import { Response, NextFunction } from "express";
import { Request } from "../apiTypes";
import { FormAnswer, FormAnswerOptions } from "../../core/formAnswer";
export class FormCtrl {
......@@ -166,4 +167,35 @@ export class FormCtrl {
return;
});
}
public static answerNumber(req: Request, res: Response, next: NextFunction) {
waterfall([
(callback: (err: Error, answer?: FormAnswer[]) => void) => {
req.db.answer.readAll(req.params.id, (err: Error, resultAnswer?: FormAnswer[]) => {
if (err) {
callback(err);
return;
}
let sum: number = 0;
for (const forms of resultAnswer) {
sum += Object.keys(forms.inputAnswers).length
}
res.status(200).json({
answerNumber: sum
});
});
}
], (error: Error) => {
if (error) {
res.status(500).json({
message: "Some error has ocurred. Check error property for details.",
error: error.message
});
return;
}
});
}
}
......@@ -107,4 +107,18 @@ describe("API data controller", () => {
})
.end(done);
});
it ("Should respond 200 when reading the number of answers from a form", (done) => {
request(server)
.get("/answerNumber/1")
.expect(200)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body.answerNumber).to.be.an("number");
expect(res.body.answerNumber).to.be.equal(9);
})
.end(done);
})
});
......@@ -115,7 +115,7 @@ export class AnswerCtrl {
return;
}
res.status(200).json( resultAnswer )
res.status(200).json(resultAnswer);
});
}
], (error: Error) => {
......
......@@ -56,6 +56,7 @@ app.use(express.json());
app.get("/form/:id", FormCtrl.read);
app.put("/form/:id", tokenValidation(), FormCtrl.update);
app.post("/form", tokenValidation(), FormCtrl.write);
app.get("/answerNumber/:id", FormCtrl.answerNumber);
app.post("/answer/:id", AnswerCtrl.write);
app.get("/answer/:id", tokenValidation(), AnswerCtrl.read);
app.post("/user/signUp", UserCtrl.signUp);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment