From 4d8842513dc967cb8ce50b30c5cb5ce79ee7003a Mon Sep 17 00:00:00 2001 From: Luis Villegas Date: Tue, 14 Jun 2022 17:27:33 -0500 Subject: [PATCH 1/4] =?UTF-8?q?Agregados=20m=C3=A9todos=20para=20filtrar?= =?UTF-8?q?=20la=20lista=20de=20explorers=20por=20stack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/controllers/ExplorerController.js | 38 +++++++++++--------- lib/services/ExplorerService.js | 51 ++++++++++++++++++++------- 2 files changed, 60 insertions(+), 29 deletions(-) diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..7853e4bb 100644 --- a/lib/controllers/ExplorerController.js +++ b/lib/controllers/ExplorerController.js @@ -2,25 +2,31 @@ const ExplorerService = require("../services/ExplorerService"); const FizzbuzzService = require("../services/FizzbuzzService"); const Reader = require("../utils/reader"); -class ExplorerController{ - static getExplorersByMission(mission){ - const explorers = Reader.readJsonFile("explorers.json"); - return ExplorerService.filterByMission(explorers, mission); - } +class ExplorerController { + static getExplorersByMission(mission) { + const explorers = Reader.readJsonFile("explorers.json"); + return ExplorerService.filterByMission(explorers, mission); + } - static applyFizzbuzz(score){ - return FizzbuzzService.applyValidationInNumber(score); - } + static applyFizzbuzz(score) { + return FizzbuzzService.applyValidationInNumber(score); + } - static getExplorersUsernamesByMission(mission){ - const explorers = Reader.readJsonFile("explorers.json"); - return ExplorerService.getExplorersUsernamesByMission(explorers, mission); - } + static getExplorersUsernamesByMission(mission) { + const explorers = Reader.readJsonFile("explorers.json"); + return ExplorerService.getExplorersUsernamesByMission(explorers, mission); + } - static getExplorersAmonutByMission(mission){ - const explorers = Reader.readJsonFile("explorers.json"); - return ExplorerService.getAmountOfExplorersByMission(explorers, mission); - } + static getExplorersAmonutByMission(mission) { + const explorers = Reader.readJsonFile("explorers.json"); + return ExplorerService.getAmountOfExplorersByMission(explorers, mission); + } + + static getExplorersByStack(stack) { + const explorers = Reader.readJsonFile("explorers.json"); + const resultado = ExplorerService.getExplorersByStack(explorers, stack); + return resultado; + } } module.exports = ExplorerController; diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..3a4b8b49 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -1,21 +1,46 @@ +const { text } = require("express"); + class ExplorerService { + static filterByMission(explorers, mission) { + const explorersByMission = explorers.filter( + (explorer) => explorer.mission == mission + ); + return explorersByMission; + } - static filterByMission(explorers, mission){ - const explorersByMission = explorers.filter((explorer) => explorer.mission == mission); - return explorersByMission; - } + static filterByStack(explorers, stack) { + const explorersByStack = explorers.filter((explorer) => + explorer.stacks.includes(stack) + ); + return explorersByStack; + } - static getAmountOfExplorersByMission(explorers, mission){ - const explorersByMission = ExplorerService.filterByMission(explorers, mission); - return explorersByMission.length; - } + static getAmountOfExplorersByMission(explorers, mission) { + const explorersByMission = ExplorerService.filterByMission( + explorers, + mission + ); + return explorersByMission.length; + } - static getExplorersUsernamesByMission(explorers, mission){ - const explorersByMission = ExplorerService.filterByMission(explorers, mission); - const explorersUsernames = explorersByMission.map((explorer) => explorer.githubUsername); - return explorersUsernames; - } + static getExplorersUsernamesByMission(explorers, mission) { + const explorersByMission = ExplorerService.filterByMission( + explorers, + mission + ); + const explorersUsernames = explorersByMission.map( + (explorer) => explorer.githubUsername + ); + return explorersUsernames; + } + static getExplorersByStack(explorers, stack) { + const explorersByStack = ExplorerService.filterByStack(explorers, stack); + const explorersName = explorersByStack.map( + (explorer) => explorer.name + ": " + explorer.stacks + ); + return explorersName; + } } module.exports = ExplorerService; From 6a22fcfc475cec6e041717ab98c0ae96c88176b3 Mon Sep 17 00:00:00 2001 From: Luis Villegas Date: Tue, 14 Jun 2022 17:28:05 -0500 Subject: [PATCH 2/4] =?UTF-8?q?Prueba=20de=20unidad=20para=20el=20nuevo=20?= =?UTF-8?q?m=C3=A9todo=20de=20filtrado=20por=20stack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/controllers/ExplorerController.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 test/controllers/ExplorerController.test.js diff --git a/test/controllers/ExplorerController.test.js b/test/controllers/ExplorerController.test.js new file mode 100644 index 00000000..59e1d795 --- /dev/null +++ b/test/controllers/ExplorerController.test.js @@ -0,0 +1,9 @@ +const ExplorerController = require("./../../lib/controllers/ExplorerController"); +const ExplorerService = require("./../../lib/services/ExplorerService"); +describe("Test para ExplorerController", () => { + test("1) Filtrar por stack", () => { + const respuesta = ExplorerController.getExplorersByStack("javascript"); + // expect(respuesta[1]).toMatch("javascript"); + console.log(respuesta); + }); +}); From d2c9b0dc89e5359a895c07509f2d5832f64092e5 Mon Sep 17 00:00:00 2001 From: Luis Villegas Date: Tue, 14 Jun 2022 17:30:43 -0500 Subject: [PATCH 3/4] Agregado nuevo endpoint para filtrar explorers por stack --- lib/server.js | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/server.js b/lib/server.js index 9860b437..193394fc 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1,38 +1,52 @@ const ExplorerController = require("./controllers/ExplorerController"); const express = require("express"); +const { query } = require("express"); const app = express(); app.use(express.json()); const port = 3000; app.get("/", (request, response) => { - response.json({message: "FizzBuzz Api welcome!"}); + response.json({ message: "FizzBuzz Api welcome!" }); }); app.get("/v1/explorers/:mission", (request, response) => { - const mission = request.params.mission; - const explorersInMission = ExplorerController.getExplorersByMission(mission); - response.json(explorersInMission); + const mission = request.params.mission; + const explorersInMission = ExplorerController.getExplorersByMission(mission); + response.json(explorersInMission); }); app.get("/v1/explorers/amount/:mission", (request, response) => { - const mission = request.params.mission; - const explorersAmountInMission = ExplorerController.getExplorersAmonutByMission(mission); - response.json({mission: request.params.mission, quantity: explorersAmountInMission}); + const mission = request.params.mission; + const explorersAmountInMission = + ExplorerController.getExplorersAmonutByMission(mission); + response.json({ + mission: request.params.mission, + quantity: explorersAmountInMission, + }); }); app.get("/v1/explorers/usernames/:mission", (request, response) => { - const mission = request.params.mission; - const explorersUsernames = ExplorerController.getExplorersUsernamesByMission(mission); - response.json({mission: request.params.mission, explorers: explorersUsernames}); + const mission = request.params.mission; + const explorersUsernames = + ExplorerController.getExplorersUsernamesByMission(mission); + response.json({ + mission: request.params.mission, + explorers: explorersUsernames, + }); }); app.get("/v1/fizzbuzz/:score", (request, response) => { - const score = parseInt(request.params.score); - const fizzbuzzTrick = ExplorerController.applyFizzbuzz(score); - response.json({score: score, trick: fizzbuzzTrick}); + const score = parseInt(request.params.score); + const fizzbuzzTrick = ExplorerController.applyFizzbuzz(score); + response.json({ score: score, trick: fizzbuzzTrick }); }); -app.listen(port, () => { - console.log(`FizzBuzz API in localhost:${port}`); +app.get("/v1/explorers/stack/:stack", (request, response) => { + const stack = request.params.stack; + const explorersByStack = ExplorerController.getExplorersByStack(stack); + response.json({ stack: stack, stacks: explorersByStack }); }); +app.listen(port, () => { + console.log(`FizzBuzz API in localhost:${port}`); +}); From 40635ba0bb12ccc4081d2dd3e0ff4c3ce7e10c9c Mon Sep 17 00:00:00 2001 From: Luis Villegas Date: Tue, 14 Jun 2022 17:38:13 -0500 Subject: [PATCH 4/4] Corregido el expect en la prueba para ExplorerController --- test/controllers/ExplorerController.test.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/controllers/ExplorerController.test.js b/test/controllers/ExplorerController.test.js index 59e1d795..33e72608 100644 --- a/test/controllers/ExplorerController.test.js +++ b/test/controllers/ExplorerController.test.js @@ -1,9 +1,7 @@ const ExplorerController = require("./../../lib/controllers/ExplorerController"); -const ExplorerService = require("./../../lib/services/ExplorerService"); describe("Test para ExplorerController", () => { test("1) Filtrar por stack", () => { const respuesta = ExplorerController.getExplorersByStack("javascript"); - // expect(respuesta[1]).toMatch("javascript"); - console.log(respuesta); + expect(respuesta[0]).toMatch("javascript"); }); });