/fizzbuzz

Refactoring, API REST, Automatizacion de pruebas con GitHub Actions, Estilos con ESLint

Primary LanguageJavaScript

Refactoring, API REST, Automatizacion de pruebas con GitHub Actions, Estilos con ESLint

Este proyecto lee un archivo explorers.json que contiene una lista de explorers con información que necesitamos procesar. Con este script se logró:

  • Obtener la lista de explorers que solo están en la mision node.
  • Obtener la cantidad de explorers que están en la mission node.
  • Obtener la lista de usuarios de github de los explorers que están en la mission node.
  • Se necesitó crear una validación llamada FizzBuzz, si el explorer tiene un score que sea divisible entre 3 (revisa cómo hacer esto), deberá tener un campo trick que diga FIZZ, cualquier otro caso el valor de este nuevo campo deberá ser el score mismo. Esta validación nos sirve porque necesitamos aplicarla a la lista de todos los explorers y saber cuáles son FIZZ.
  • Después necesitamos una validación muy similar pero para cuando el score sea divisible entre 5, entonces el valor del nuevo campo trick será BUZZ, cualquier otro caso el valor será el score.
  • Pero después volvimos a necesitar otro caso para cuando el valor del score fuera divisible entre 3 y también entre 5, entonces el valor del campo trick debe ser FIZZBUZZ, de lo contrario tendrá el valor del score.

Actualmente las últimas 3 validaciones se corren independientemente y se juntan en un excel. Se necesita una misma validación que apliqué las tres reglas a toda la lista:

  • Si el campo score del explorer es divisible entre 3, entonces se agrega un campo nuevo llamado trick cuyo valor será FIZZ.
  • Si el campo score del explorer es divisible entre 5, entonces se agrega un campo nuevo llamado trick cuyo valor será BUZZ.
  • Si el campo score del explorer es divisible entre 3 y 5, entonces se agrega un campo nuevo llamado trick cuyo valor será FIZZBUZZ.
  • Si el campo score no es divisible por ninguna de las reglas anteriores, se agrega un campo nuevo llamado trick cuyo valor será el del score.

Requerimientos:

  1. Refactorizar el script legado (app.js) y rehacerlo con mucho cuidado ya que es información muy sensible.
  2. Crea un API para usar la funcionalidad anterior:
  3. Crea un endpoint para recibir un número y aplicar la validación del fizzbuzz.

Requerimiento 1 - Refactoring

Creacion de metodo reader el cual permite leer archivos json por medio de una ruta el cual es utilizado para leer la lista de explorers a procesar:

reader

Se genera script ExplorerService para obtener la lista de explorers que estan en las diferentes misiones asi como cantidad y usuarios:

ExplorerService

Se genera script FizzbuzzService para realizar las validaciones sobre el score de los explorer:

FizzbuzzService

Test con JEST para ExplorerService

  • test 1:
    test1
  • test 2:
    test2
  • test 3:
    test3

Test con JEST para FizzbuzzService

  • test 1:
    test1
  • test 2:
    test1
  • test 3:
    test1
  • test 4:
    test1

Requerimiento 2 - Creacion de api para funcionalidad:

API REST con Express.js

apis

Test

  • Test 1 - lista de explorers que solo están en la mision node:
    test1
  • Test 2 - cantidad de explorers que están en la mission node:
    test2
  • Test 3 - lista de usuarios de github de los explorers que están en la mission node. :
    test3

Requerimiento 3 - Creacion de endpoint para recibir un número y aplicar la validación del fizzbuzz.

Metodo con funcionalidad:

fizzbuzzNumber

Api:

api_fizzbuzz

Test

  • Test 1:
    test

Automatizacion de pruebas GitHub Actions

  • Configuracion:
    conf
  • Pruebas automatizadas GitHub Actions:
    GHA_test

Estilos ESLint

  • Configuracion:
    style_conf