From dd899f43f65c1bd8aab51e35fb70f8c4eaf5e609 Mon Sep 17 00:00:00 2001 From: Olaf Date: Thu, 12 May 2022 17:41:42 -0500 Subject: [PATCH 1/4] Creamos el metodo estatico getExplorersbyStack en el explorerService --- lib/services/ExplorerService.js | 5 +++++ 1 file changed, 5 insertions(+) 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; From 9aa920b402726295fc050318702a23d6cfd9d40d Mon Sep 17 00:00:00 2001 From: Olaf Date: Thu, 12 May 2022 17:42:08 -0500 Subject: [PATCH 2/4] Creamos el test para el nuevo metodo de getExplorersbyStack --- test/services/ExplorerService.test.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); + }); }); From 3bcc5a1334a3d01ab4b35a3e66ec223e653c7224 Mon Sep 17 00:00:00 2001 From: Olaf Date: Thu, 12 May 2022 17:55:38 -0500 Subject: [PATCH 3/4] Creamos el metodo estatico getExplorersByStack en ExplorerController --- lib/controllers/ExplorerController.js | 5 +++++ 1 file changed, 5 insertions(+) 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; From 83704b802092136b607b47f1c55ea428b6688c7a Mon Sep 17 00:00:00 2001 From: Olaf Date: Thu, 12 May 2022 17:58:54 -0500 Subject: [PATCH 4/4] Creamos el endpoint /v1/explorers/stack/javascript en la API para obtener los explorers por stack --- lib/server.js | 6 ++++++ 1 file changed, 6 insertions(+) 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);