From 296625039c82f2fcc21db89706811e8a7f612e8b Mon Sep 17 00:00:00 2001 From: PaolaDaft Date: Thu, 19 May 2022 07:33:56 -0500 Subject: [PATCH 1/5] Agregando prueba para el nuevo requerimiento: regresar lista de explorers filtrados por un stack --- test/services/ExplorerService.test.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/test/services/ExplorerService.test.js b/test/services/ExplorerService.test.js index 4313f192..b22537f8 100644 --- a/test/services/ExplorerService.test.js +++ b/test/services/ExplorerService.test.js @@ -2,9 +2,23 @@ const ExplorerService = require("./../../lib/services/ExplorerService"); describe("Tests para ExplorerService", () => { test("Requerimiento 1: Calcular todos los explorers en una misión", () => { - const explorers = [{mission: "node"}]; + const explorers = [{ mission: "node" }]; const explorersInNode = ExplorerService.filterByMission(explorers, "node"); expect(explorersInNode.length).toBe(1); }); + test("Requerimiento 4: Lista de explorers filtrados por un stack", () => { + const explorers = + [ + { "name": "Woopa1", "mission": "node", "stacks": ["javascript", "reasonML", "elm"] }, + { "name": "Woopa2", "mission": "node", "stacks": ["javascript", "groovy", "elm"] }, + { "name": "Woopa3", "mission": "java", "stacks": ["elixir", "groovy", "reasonML"] } + ]; + const explorersListWithJsStack = ExplorerService.getExplorersByStack(explorers, "javascript"); + + expect(explorersListWithJsStack).toHaveLength(2); + expect(explorersListWithJsStack[0].stacks).toEqual(expect.arrayContaining(["javascript"])); + expect(explorersListWithJsStack[1].stacks).toEqual(expect.arrayContaining(["javascript"])); + }); + }); From 94281c2b40e9a69df0bd30a77219f0c82805d506 Mon Sep 17 00:00:00 2001 From: PaolaDaft Date: Thu, 19 May 2022 08:09:22 -0500 Subject: [PATCH 2/5] agregando metodo getExplorersByStack() --- lib/services/ExplorerService.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..4cba36e1 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.join(", ").includes(stack)); + return explorersByStack; + } + } module.exports = ExplorerService; From 40debc1dda2d461b5ad870a38defc56a441e671b Mon Sep 17 00:00:00 2001 From: PaolaDaft Date: Thu, 19 May 2022 11:19:25 -0500 Subject: [PATCH 3/5] Prueba del metodo getExplorersByStack() --- test/controllers/ExplorerController.test.js | 40 +++++++++++++++++++++ 1 file changed, 40 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..5b83d23b --- /dev/null +++ b/test/controllers/ExplorerController.test.js @@ -0,0 +1,40 @@ +const ExplorerController = require("../../lib/controllers/ExplorerController"); + +describe("Unit Tests for ExplorerService class", () => { + test("1) Use the method getExplorersByMission()", () => { + const explorersInNodeMission = ExplorerController.getExplorersByMission("node"); + + explorersInNodeMission.forEach(explorer => { + expect(explorer.mission).toBe("node"); + }); + }); + + test("2) Use the method getExplorersUsernamesByMission()jet", () => { + const explorersInNodeMission = ExplorerController.getExplorersUsernamesByMission("node"); + + expect(explorersInNodeMission).toEqual(["ajolonauta1", "ajolonauta2", "ajolonauta3", "ajolonauta4", "ajolonauta5", + "ajolonauta11", "ajolonauta12", "ajolonauta13", "ajolonauta14", "ajolonauta15"]); + }); + + test("3) Use the method getExplorersAmonutByMission()", () => { + const explorersInNodeMission = ExplorerController.getExplorersAmonutByMission("node"); + expect(explorersInNodeMission).toEqual(10); + }); + + test("4) Use the method getValidationInNumber()", () => { + expect(ExplorerController.applyFizzbuzz(1)).toEqual(1); + expect(ExplorerController.applyFizzbuzz(3)).toBe("FIZZ"); + expect(ExplorerController.applyFizzbuzz(5)).toBe("BUZZ"); + expect(ExplorerController.applyFizzbuzz(15)).toBe("FIZZBUZZ"); + + + }); + test("Requerimiento 4: Lista de explorers filtrados por un stack", () => { + const explorersListWithJsStack = ExplorerController.getExplorersByStack("javascript"); + + expect(explorersListWithJsStack).toHaveLength(11); + expect(explorersListWithJsStack[0].stacks).toEqual(expect.arrayContaining(["javascript"])); + expect(explorersListWithJsStack[1].stacks).toEqual(expect.arrayContaining(["javascript"])); + }); + +}); \ No newline at end of file From d2cd0ebec3a683c93efac7cbbab580ed404895a1 Mon Sep 17 00:00:00 2001 From: PaolaDaft Date: Thu, 19 May 2022 11:25:32 -0500 Subject: [PATCH 4/5] Agregando metodo getExplorersByStack() a controller --- lib/controllers/ExplorerController.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..57e43a9c 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 8074ffff75079f22e5602aafd06e6e80f476c573 Mon Sep 17 00:00:00 2001 From: PaolaDaft Date: Thu, 19 May 2022 11:47:41 -0500 Subject: [PATCH 5/5] agregando endpoint | endpoint listo --- lib/server.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/server.js b/lib/server.js index 9860b437..7205db39 100644 --- a/lib/server.js +++ b/lib/server.js @@ -32,6 +32,12 @@ app.get("/v1/fizzbuzz/:score", (request, response) => { response.json({score: score, trick: fizzbuzzTrick}); }); +app.get("/v1/explorers/stack/:stack", (request, response) => { + const stack = request.params.stack; + const explorersInStack = ExplorerController.getExplorersByStack(stack); + response.json(explorersInStack); +}); + app.listen(port, () => { console.log(`FizzBuzz API in localhost:${port}`); });