Skip to content

PR contribución Open Source - #150

Open
herr-code wants to merge 3 commits into
visualpartnership:masterfrom
herr-code:master
Open

PR contribución Open Source#150
herr-code wants to merge 3 commits into
visualpartnership:masterfrom
herr-code:master

Conversation

@herr-code

Copy link
Copy Markdown

Un saludo Colega!
Conociendo el requerimiento y analizando su proyecto decidí apoyarlo.
Considerando la estructura siguiente:

graph TD;
    Reader-->ExplorerService;
    FizzbuzzService;
    ExplorerService-->ExplorerController
    FizzbuzzService-->ExplorerController
    ExplorerController-->Server
Loading

Opté por crear:

  1. Método getExplorersByStack(explorers, stack) en ExplorerService: Se encargará de devolver una lista de los explorers filtrados de acuerdo a un stack.
  • explorers => Array de objetos
  • stack => Parámetro string.
static getExplorersByStack(explorers, stack){
        const explorersByStack = explorers.filter((explorer) => explorer.stacks.includes(stack));
        return explorersByStack;
}
  1. Método getExplorersListByStack(stack) en ExplorerController: Se encargará usar el método anterior de ExplorerService y conectarse con el server.js devolviendo los resultados de la solicitud HTTP
  • stack => Parámetro string.
static getExplorersListByStack(stack){
        const explorers = Reader.readJsonFile("explorers.json");
        return ExplorerService.getExplorersByStack(explorers, stack);
 }

3 Endpoint: Encargado de obtener el stack mediante query.params y haciendo uso del ExplorerController para obtener los datos.

app.get("/v1/explorers/stack/:stack", (request, response) => {
    const stack = request.params.stack;
    const explorersListWithStack = ExplorerController.getExplorersListByStack(stack);
    response.json(explorersListWithStack);
});

Resultados

Animation4

También añadí pruebas para los métodos que he creado.

ExplorerController.test.js

    test("Requerimiento extra: Mostrar explorers filtrados por stack javascript", () => {
        const explorersWithStackJavascript = ExplorerController.getExplorersListByStack("javascript");
        expect(explorersWithStackJavascript.length).toBe(11);
        expect(explorersWithStackJavascript[2].name).toBe("Woopa4");
        expect(explorersWithStackJavascript[2].stacks).toEqual(["javascript"]);
    });

    test("Requerimiento extra: Mostrar explorers filtrados por stack vacio", () => {
        const explorersWithStackJavascript = ExplorerController.getExplorersListByStack("");
        expect(explorersWithStackJavascript.length).toBe(0);
    });

ExplorerService.test.js

test("Requerimiento extra: Mostrar explorers filtrados por un stack", () => {
        const explorers = [
            {name: "Woopa1", stacks: ["javascript", "groovy", "elm"]}, 
            {name: "Woopa2", stacks: ["java", "groovy", "elm"]}, 
            {name: "Woopa3", stacks: ["javascript", "groovy", "elm"]}
            ];
        const explorersInJavascript = ExplorerService.getExplorersByStack(explorers, "javascript");
        expect(explorersInJavascript.length).toBe(2);
        expect(explorersInJavascript).toEqual([{name: "Woopa1", stacks: ["javascript", "groovy", "elm"]},
            {name: "Woopa3", stacks: ["javascript", "groovy", "elm"]}]);
});

Considerando mi solución espero recibir su opinión ? PR accepted 😄 : Feedback 😢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant