diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..f131c411 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.getExplorersbyStack(explorers, stack); + } } module.exports = ExplorerController; diff --git a/lib/server.js b/lib/server.js index 9860b437..5ac1bb5a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -26,6 +26,12 @@ app.get("/v1/explorers/usernames/:mission", (request, response) => { response.json({mission: request.params.mission, explorers: explorersUsernames}); }); +app.get("/v1/explorers/stack/:stack", (request, response) => { + const stack = request.params.stack; + const explorersByStack = ExplorerController.getExplorersByStack(stack); + response.json({mission: request.params.mission, explorers: explorersByStack}); +}); + app.get("/v1/fizzbuzz/:score", (request, response) => { const score = parseInt(request.params.score); const fizzbuzzTrick = ExplorerController.applyFizzbuzz(score); diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..d23b1492 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -16,6 +16,11 @@ class ExplorerService { return explorersUsernames; } + static getExplorersbyStack(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..a9afa76d 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("Requerimiento 2: Obtener todos los explorers con cierto stack", () => { + const explorers = [{stacks: ["javascript","reasonML","elm"]}]; + const explorersWithStack = ExplorerService.getExplorersbyStack(explorers, "reasonML"); + expect(explorersWithStack.length).toBe(1); + }); });