From ad2eb970c6bdf040be9b6257321081d4d72c5bd9 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Wed, 15 Mar 2017 09:39:26 -0300
Subject: [PATCH] Add simulation/time (UC301)

Route /api/v1/simulation/time exists and works with parameter max_time

* Example route: `/api/v1/simulation/time?max_time=10`
* Return value: {"result": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}

If no value is specified in max_time, an error is returned
---
 src/libs/routes/simulation.js | 15 +++++++++++++++
 src/test/simulation.js        | 26 ++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/src/libs/routes/simulation.js b/src/libs/routes/simulation.js
index 6469d4d6..da1204be 100644
--- a/src/libs/routes/simulation.js
+++ b/src/libs/routes/simulation.js
@@ -14,6 +14,21 @@ const response = require(`${libs}/middlewares/response`);
 
 const Simulation = require(`${libs}/models/simulation`);
 
+simulationApp.get('/time', (req, res, next) => {
+    const maxTime = parseInt(req.query.max_time, 10);
+    log.debug('maxTime: ', maxTime);
+    if(isNaN(maxTime)) {
+        res.status(400);
+        next({
+            status: 400,
+            message: 'Invalid value for mandatory parameter max_time'
+        });
+    }
+    res.json({
+        result: Array.apply(null, {length: maxTime}).map(Number.call, Number).map((i)=>i+1)
+    });
+});
+
 simulationApp.get('/', (req, res) => {
     let out = { success: true, msg: 'controller working' };
     out.result = new Array()
diff --git a/src/test/simulation.js b/src/test/simulation.js
index c74ca3ae..d620d615 100644
--- a/src/test/simulation.js
+++ b/src/test/simulation.js
@@ -405,4 +405,30 @@ describe('Requires a simulation', () => {
                 done();
             });
     });
+
+    it('should returns an array in simulation/time', (done) => {
+        let max_time = 10;
+        chai.request(server)
+            .get(`/api/v1/simulation/time?max_time=${max_time}`)
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+                done();
+            });
+    });
+
+    it('should return an error when no max_time is specified in simulation/time', (done) => {
+        let max_time = 10;
+        chai.request(server)
+            .get(`/api/v1/simulation/time?max_time=${max_time}`)
+            .end((err, res) => {
+                res.should.have.status(400);
+                res.should.be.json;
+                res.body.should.have.property('message');
+                res.body.message.should.equal('Invalid value for mandatory parameter max_time');
+                done();
+            });
+    });
 });
-- 
GitLab