Skip to content

mcaligares/react-apptest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aplicación de prueba realizada con React que consiste en un catalogo de productos que pueden ser canjeados.

Mejoras

React con TypeScript

Problema

En la guía para comenzar el reto hace referencia al comando.

create-react-app name-of-your-app

El problema es que en la documentación de React todos los ejemplos estan en TypeScript.

Solución

Agregué TypScript al proyecto usando el parámetro --typescript.

create-react-app name-of-your-app --typescript

Pruebas Unitarias

Agregué pruebas unitarias de los componentes. Utilicé Jest y la librería react-testing-library para simplificar lógica.

Los test se pueden correr usando el comando yarn test

Icono bolsa de compras

Problema

El icono de bolsa de compras del componente ProductCard cambia cuando el mouse se encima. Si utilizamos 2 iconos, al inspeccionar el elemento podemos ver que se renderizan cada vez que pasamos el mouse.

Solución

Se utiliza un único icono y cambiamos el color mediante estilos.

Manejador de estados

Problema

Se utilizó el state de los componentes para pasarlo como parametro y así interactuar entre componentes. La accion, que realiza un usuario cuando canjea un producto y se descuentan sus puntos involucra la comuncación de varios componentes.

Solución

Se implementó un manejador de estados. Utilizamos Unstated en vez de Redux por que es mucho más simple, liviano y práctico.

Estilos

Se implementó node-sass para evitar escribir CSS puro y utilizar un solo archivo de estilos (/assets/styles/theme.scss).

Versionado

Se utilizó una cuenta en github para crear y subir el proyecto. La primera version de la aplicación se liberó el Lunes 24 utilizando el tag name v1.0.0. Desde ese punto se hizo un branch llamado develop donde se desarrolló todas las features. Cada vez que se terminaba una feature se realizaba el merge con master y luego se publicaba un nuevo tag.

Changelog

Se utilizó un archivo CHANGELOG.md para documentar los cambios realizados. El formato del archivo está basado en el template de Keep A Changelog.

Integración continua

Como GitHub no usa pipelines como GitLab o Bitbuket, utilicé CircleCi para poder correr los test y garantizar una integridad de la aplicación. El historial de los builds se pueden ver en mcaligares/react-test.

Opción "Redeem now"

El reto pedía que la opcion de canjear un producto apareciera cuando el usuario interactuaba con él. Se realizó una modificación en la cual se agregó el botón de canje en el producto.

Éste criterio se tomó para simplificar la acción de canjear. Del modo que se solicitaba, el usuario debía realizar dos acciones para concretar el canje. La primer acción es acercar el mouse al producto y la segunda es hacer click en el boton. Con la modificación le toma solo una acción ya que el boton siempre está visible.

Buscador de productos

Se agregó un buscador que realiza un filtro por nombre de producto y por nombre de categoría.

Sección de perfil

Se agergó una sección perfil para ver datos del usuario y poder agregar puntos a la cuenta.

Imagen de precarga

Problema

Las imagenes de los productos tardan en cargarse y cuando lo hacen modifican el tamaño de las cards.

Solución

Se agregó una imagen de precarga que se mostrará hasta que la imagen del producto se descarge completamente. La implementación fue mediante CSS usando la propiedad background-image.

TODO

Loading con skeleton

Reemplazar el loading de productos por un skeleton.