From 1fc5cd6c06c213c006d6db0a5ae4f2c8efd74baf Mon Sep 17 00:00:00 2001 From: mabvmex Date: Fri, 13 May 2022 09:51:30 -0500 Subject: [PATCH 1/3] Se agregan pruebas: test/server.test.js y test/service/ExplorerService.test.js --- test/server.test.js | 28 +++++++++++++++++++++++++++ test/services/ExplorerService.test.js | 10 +++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 test/server.test.js diff --git a/test/server.test.js b/test/server.test.js new file mode 100644 index 0000000..5709337 --- /dev/null +++ b/test/server.test.js @@ -0,0 +1,28 @@ +const request = require("supertest"); +const app = require("./../lib/server"); + +describe("== Unit Testing for server.js ==", () => { + test("1.- Solicitud GET para '/' muestra 'status code' 200", async () => { + const response = await request(app).get("/").send(); + expect(response.statusCode).toBe(200); + }); + + test("2.- Solicitud GET para '/v1/explorers/node' muestra 'status code' 200", async () => { + const response = await request(app).get("/v1/explorers/node").send(); + expect(response.statusCode).toBe(200); + }); + + test("3.- Solicitud GET para '/v1/explorers/username/node' muestra 'status code' 200", async () => { + const response = await request(app).get("/v1/explorers/usernames/node").send(); + expect(response.statusCode).toBe(200); + }); + + test("4.- Solicitud GET para '/v1/explorers/amount/node' muestra 'status code' 200", async () => { + const response = await request(app).get("/v1/explorers/amount/node").send(); + expect(response.statusCode).toBe(200); + }); + test("5.- Solicitud GET para '/v1/explorers/stack/javascript' muestra 'status code' 200", async () => { + const response = await request(app).get("/v1/explorers/stack/javascript").send(); + expect(response.statusCode).toBe(200); + }); +}); diff --git a/test/services/ExplorerService.test.js b/test/services/ExplorerService.test.js index 4313f19..3a79db0 100644 --- a/test/services/ExplorerService.test.js +++ b/test/services/ExplorerService.test.js @@ -1,4 +1,6 @@ -const ExplorerService = require("./../../lib/services/ExplorerService"); +const Reader = require("./../../lib/utils/Reader"); +const ExplorerService = require("../../lib/services/ExplorerService"); +const explorers = Reader.readJsonFile("explorers.json"); describe("Tests para ExplorerService", () => { test("Requerimiento 1: Calcular todos los explorers en una misión", () => { @@ -8,3 +10,9 @@ describe("Tests para ExplorerService", () => { }); }); + + +test("2.- Test for getExplorersUsernamesByStack", () => { + const exploresUsernamesByStack = ExplorerService.getExplorersUsernamesByStack(explorers, "javascript"); + expect(exploresUsernamesByStack[0]).toBe("ajolonauta1"); +}); From c7f7284324a8f631e9b75e9566cb1508f3c755d6 Mon Sep 17 00:00:00 2001 From: mabvmex Date: Fri, 13 May 2022 09:53:21 -0500 Subject: [PATCH 2/3] Se agrega endpoint '/v1/explorers/stack/:stack' --- lib/server.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/server.js b/lib/server.js index 9860b43..45fdad9 100644 --- a/lib/server.js +++ b/lib/server.js @@ -4,35 +4,55 @@ 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); + 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 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 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}); + response.json({ score: score, trick: fizzbuzzTrick }); +}); + +app.get("/v1/explorers/stack/:stack", (req, res) => { + const stack = req.params.stack; + const result = ExplorerController.getExplorerByStack(stack); + res.json({ + stack: req.params.stack, + explorers: result, + }); }); app.listen(port, () => { console.log(`FizzBuzz API in localhost:${port}`); }); +module.exports = app; From 7b414fa1a2651d75b073ce61e09c882371470769 Mon Sep 17 00:00:00 2001 From: mabvmex Date: Fri, 13 May 2022 09:55:05 -0500 Subject: [PATCH 3/3] Se agrega funcionalidad en lib/controllers/ExplorerController y en lib/services/ExplorerService --- lib/controllers/ExplorerController.js | 29 ++++++++++++++++------ lib/services/ExplorerService.js | 35 +++++++++++++++++++++------ 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6..9534f09 100644 --- a/lib/controllers/ExplorerController.js +++ b/lib/controllers/ExplorerController.js @@ -2,24 +2,39 @@ const ExplorerService = require("../services/ExplorerService"); const FizzbuzzService = require("../services/FizzbuzzService"); const Reader = require("../utils/reader"); -class ExplorerController{ - static getExplorersByMission(mission){ +class ExplorerController { + static getExplorersByMission(mission) { const explorers = Reader.readJsonFile("explorers.json"); return ExplorerService.filterByMission(explorers, mission); } - static applyFizzbuzz(score){ + static applyFizzbuzz(score) { return FizzbuzzService.applyValidationInNumber(score); } - static getExplorersUsernamesByMission(mission){ + static getExplorersUsernamesByMission(mission) { const explorers = Reader.readJsonFile("explorers.json"); - return ExplorerService.getExplorersUsernamesByMission(explorers, mission); + return ExplorerService.getExplorersUsernamesByMission( + explorers, + mission + ); } - static getExplorersAmonutByMission(mission){ + static getExplorersAmonutByMission(mission) { const explorers = Reader.readJsonFile("explorers.json"); - return ExplorerService.getAmountOfExplorersByMission(explorers, mission); + return ExplorerService.getAmountOfExplorersByMission( + explorers, + mission + ); + } + + static getExplorerByStack(stack) { + const explorer = Reader.readJsonFile("explorers.json"); + const explorerStack = ExplorerService.getExplorersUsernamesByStack( + explorer, + stack + ); + return explorerStack; } } diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef957..e109f0d 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -1,21 +1,40 @@ class ExplorerService { - - static filterByMission(explorers, mission){ - const explorersByMission = explorers.filter((explorer) => explorer.mission == mission); + static filterByMission(explorers, mission) { + const explorersByMission = explorers.filter( + (explorer) => explorer.mission == mission + ); return explorersByMission; } - static getAmountOfExplorersByMission(explorers, mission){ - const explorersByMission = ExplorerService.filterByMission(explorers, mission); + 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); + static getExplorersUsernamesByMission(explorers, mission) { + const explorersByMission = ExplorerService.filterByMission( + explorers, + mission + ); + const explorersUsernames = explorersByMission.map( + (explorer) => explorer.githubUsername + ); return explorersUsernames; } + static getExplorersUsernamesByStack(explorers, stack) { + const explorers_JSstack = explorers.filter((singleExplorer) => + singleExplorer.stacks.includes(stack) + ); + + const usernames_JSstack = explorers_JSstack.map( + (singleExplorer_JSstack) => singleExplorer_JSstack.githubUsername + ); + return usernames_JSstack; + } } module.exports = ExplorerService;