diff --git a/.gitignore b/.gitignore index 3c3629e6..d2cdc44d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules +node_modules +package.json diff --git a/lib/controllers/ExplorerController.js b/lib/controllers/ExplorerController.js index 85590a6d..1664ae34 100644 --- a/lib/controllers/ExplorerController.js +++ b/lib/controllers/ExplorerController.js @@ -21,6 +21,12 @@ class ExplorerController{ const explorers = Reader.readJsonFile("explorers.json"); return ExplorerService.getAmountOfExplorersByMission(explorers, mission); } + + static getExplorersByStack(stack){ + const explorers = Reader.readJsonFile("./explorers.json"); + const explorersByStack = ExplorerService.getExplorerByStack(explorers, stack); + return explorersByStack; + } } module.exports = ExplorerController; diff --git a/lib/server.js b/lib/server.js index 9860b437..47740167 100644 --- a/lib/server.js +++ b/lib/server.js @@ -32,6 +32,13 @@ 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 explorersByStack = ExplorerController.getExplorersByStack(stack); + + response.json(explorersByStack); +}); + app.listen(port, () => { console.log(`FizzBuzz API in localhost:${port}`); }); diff --git a/lib/services/ExplorerService.js b/lib/services/ExplorerService.js index 9fef9574..133cedc8 100644 --- a/lib/services/ExplorerService.js +++ b/lib/services/ExplorerService.js @@ -16,6 +16,10 @@ class ExplorerService { return explorersUsernames; } + static getExplorerByStack(explorers, stack){ + const ExplorersByStack = explorers.filter((explorer) => explorer.stacks.includes(stack)); + return ExplorersByStack; + } } module.exports = ExplorerService; diff --git a/package.json b/package.json deleted file mode 100644 index 119436d2..00000000 --- a/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "fizzbuzz", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "node ./node_modules/.bin/jest", - "linter": "node ./node_modules/eslint/bin/eslint.js", - "linter-fix": "node ./node_modules/eslint/bin/eslint.js . --fix", - "server": "node ./lib/server.js" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "eslint": "^8.14.0", - "jest": "^27.5.1" - }, - "dependencies": { - "express": "^4.17.3" - } -} diff --git a/test/controllers/ExplorerController.test.js b/test/controllers/ExplorerController.test.js new file mode 100644 index 00000000..ff5256f0 --- /dev/null +++ b/test/controllers/ExplorerController.test.js @@ -0,0 +1,8 @@ +const ExplorerController = require("./../../lib/controllers/ExplorerController"); + +describe("Pruebas de unidad de la clase ExplorerController", () => { + test("Requerimiento 4: Obtener lista de explorers que contengan el stack", () => { + const explorersByStack = ExplorerController.getExplorersByStack("javascript"); + expect(explorersByStack.length).toBe(11); + }); +}); \ No newline at end of file diff --git a/test/services/ExplorerService.test.js b/test/services/ExplorerService.test.js index 4313f192..287495bd 100644 --- a/test/services/ExplorerService.test.js +++ b/test/services/ExplorerService.test.js @@ -7,4 +7,13 @@ describe("Tests para ExplorerService", () => { expect(explorersInNode.length).toBe(1); }); + test("Requerimiento 4: Filtrar explorers por stack", () => { + const explorers = [ + {name: "Explorer1", stacks: ["elixir", "javascript"]}, + {name: "Explorer2", stacks: ["elixir"]}, + {name: "Explorer3", stacks: ["javascript"]} + ]; + const ExplorersByStack = ExplorerService.getExplorerByStack(explorers, "elixir"); + expect(ExplorersByStack.length).toBe(2); + }); });