diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..03df94a1 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 explorers = Reader.readJsonFile("explorers.json"); + return ExplorerService.filterByStack(explorers, stack); + } } module.exports = ExplorerController; diff --git a/lib/server.js b/lib/server.js index 9860b437..bdfe4c40 100644 --- a/lib/server.js +++ b/lib/server.js @@ -36,3 +36,8 @@ app.listen(port, () => { console.log(`FizzBuzz API in localhost:${port}`); }); +app.get("/v1/explorers/stack/:stack", (request, response) => { + const stack = request.params.stack; + const explorerStack = ExplorerController.getExplorersByStack(stack); + response.json(explorerStack); +}); \ No newline at end of file diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..e692b0a4 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -16,6 +16,11 @@ class ExplorerService { return explorersUsernames; } + static filterByStack(explorers, stack){ + const explorersByStack = explorers.filter((explorer) => explorer.stacks.includes(stack)); + return explorersByStack; + } + } module.exports = ExplorerService; diff --git a/test/services/ExplorerService.test.js b/test/services/ExplorerService.test.js index 4313f192..59e8c15b 100644 --- a/test/services/ExplorerService.test.js +++ b/test/services/ExplorerService.test.js @@ -6,5 +6,10 @@ describe("Tests para ExplorerService", () => { const explorersInNode = ExplorerService.filterByMission(explorers, "node"); expect(explorersInNode.length).toBe(1); }); + test("Nuevo Requerimiento: devolver todos los explorers con el stack javascript", () => { + const explorers = [{stacks: ["java", "ruby", "javascript"]}, {stacks: ["java", "ruby", "python"]}, {stacks: ["ruby", "rails"]}]; + const explorersJS = ExplorerService.filterByStack(explorers, "javascript"); + expect(explorersJS.length).toBe(1); + }); });