Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- Nest JS https://nestjs.com/
- Node: 14 o superior
## Problema de negocio
El sistema busca automatizar el comportamiento de un bibliotecario cuando un
usuario
desea prestar un libro.
## Objetivo
Crear una API tipo REST la cual permita llevar a cabo las siguientes
funcionalidades
1. El Path debe ser /prestamo y el método HTTP tipo POST: permite crear un
prestamo con las siguientes validaciones
1. Un usuario invitado solo puede tener un libro prestado en la biblioteca, si
un usuario invitado intenta prestar más de un libro debería retornar un error HTTP
400 con el siguiente json.
Para verificar si un usuario ya tiene un préstamo se debe usar el campo
identificacionUsuario
{
"mensaje" : "El usuario con identificación xxxxxx ya tiene un libro
prestado por lo cual no se le puede realizar otro préstamo"
}
{
"isbn":"DASD154212",
"identificaciónUsuario":"154515485",
"tipoUsuario":1
}
Respuesta exitosa
{
"id": 1,
"fechaMaximaDevolucion" : "15/02/2021"
}
{
"id": 1,
"isbn":"DASD154212",
"identificaciónUsuario":"154515485",
"tipoUsuario":1,
"fechaMaximaDevolucion" : "15/02/2021"
}
## Restricciones técnicas
1. La base de datos debe ser en memoria, en el archivo app.module.ts ya se
encuentra la configuración la cual está soportada por el motor Sqlite, si necesita
modificar estos archivos o algo de la conexión asegúrese de que sea una base de
datos en memoria.
## Conceptos a evaluar
1. Cumpliento de los requerimientos: para esto hay 6 pruebas automatizadas en la
clase prestamo.spec.ts ubicada en el paquete test/prestamo.spec.ts, las cuales son
las encargadas de validar que usted cumpla con cada uno de los requerimientos.
Estas pruebas se encuentran fallando y su objetivo es hacerlas funcionar
correctamente.
2. Código limpio: valoramos que su código sea mantenible y con principios de código
limpio.
3. Arquitectura: valoramos que su arquitectura propuesta demuestre una correcta
separación de responsabilidades.
1. Te recomendamos hacer uso del principio de responsabilidad única
2. Te recomendamos usar un patrón de arquitectura, como arquitectura hexagonal,
arquitectura limpia o MVC.
3. Trata de no poner la lógica de negocio en los controladores, separa tu logica
de acuerdo a las restricciones del patrón de arquitectura seleccionado.
4. Pruebas unitarias y de integración (deseable): valoramos si logra construir
pruebas unitarias y de integración a su lógica de negocio.
5. Si el sistema identifica que la prueba no ha sido desarrollada por usted
inmediatamente se cancela el proceso de selección