diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..11d74f1f 100644 --- a/lib/controllers/ExplorerController.js +++ b/lib/controllers/ExplorerController.js @@ -21,6 +21,11 @@ class ExplorerController{ const explorers = Reader.readJsonFile("explorers.json"); return ExplorerService.getAmountOfExplorersByMission(explorers, mission); } + + static getExplorersByStack(stack){ + const result = ExplorerService.getExplorersByStack(explorers,stack); + return result; + } } module.exports = ExplorerController; diff --git a/lib/server.js b/lib/server.js index 9860b437..a22d5e5b 100644 --- a/lib/server.js +++ b/lib/server.js @@ -36,3 +36,9 @@ app.listen(port, () => { console.log(`FizzBuzz API in localhost:${port}`); }); +app.get("/v1/explorers/stack/:stack", (request, response)=>{ + const stack = request.params.stack; + const explorerInMission = ExplorerController.getExplorersByStack(stack); + response.json(explorerInMission); +}); + diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..f4b521e6 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -15,6 +15,10 @@ class ExplorerService { const explorersUsernames = explorersByMission.map((explorer) => explorer.githubUsername); return explorersUsernames; } + static getExplorersByStack(explorers,stack){ + const explorersInNode = explorers.filter((explorer) => explorer.stacks.find((tec)=>tec==stack)); + return explorersInNode; + } } diff --git a/test/services/ExplorerService.test.js b/test/services/ExplorerService.test.js index 4313f192..40f13c2a 100644 --- a/test/services/ExplorerService.test.js +++ b/test/services/ExplorerService.test.js @@ -6,5 +6,23 @@ describe("Tests para ExplorerService", () => { const explorersInNode = ExplorerService.filterByMission(explorers, "node"); expect(explorersInNode.length).toBe(1); }); + test ("For getExplorersByStack function que filtra explorers dependieno de la stack",()=>{ + const explorers = [{stacks: [ + "javascript", + "elixir", + "groovy", + "reasonML", + "elm"] + }, + {stacks: [ + "elixir", + "groovy", + "reasonML", + "elm"] + } + ]; + const explorersInNode = ExplorerService.getExplorersByStack(explorers, "javascript"); + expect(explorersInNode.length).toBe(1); + }); });