-
Notifications
You must be signed in to change notification settings - Fork 1
Color
El modelo Color representa una entidad de un color en el sistema. A continuación, se describen sus atributos y métodos.
-
id(Integer): -
- Clave primaria del color.
-
- Se genera automáticamente con la estrategia
GenerationType.IDENTITY.
- Se genera automáticamente con la estrategia
-
nombre(String): -
- Nombre del color.
-
- Tiene una longitud mínima de 1 carácter y máxima de 100 caracteres.
-
- No puede ser nulo.
-
fechaEliminacion(LocalDateTime): -
- Representa la fecha en la que el color fue eliminado (si es que lo fue).
-
- Puede ser
nullsi el color no está eliminado.
- Puede ser
-
Endpoint:
POST /products/color - Descripción: Crea un nuevo color en el sistema.
- Cuerpo de la Solicitud:
-
-
nombre: string (obligatorio, máximo 100 caracteres)
-
{
"nombre": "nombre color" //String
}- Respuestas:
- 201 Created: Color creado exitosamente (Esto aplica tanto para cuando se crea una color, o cuando se quiere crear una color con el mismo nombre que un color eliminado, en ese caso lo que se hace es recuperar dicho color).
{
"status": 201,
"message": "Created.",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- No se envió un nombre para el color.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "No se envió un nombre para el color."
}-
- El nombre contiene caracteres no permitidos.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "El nombre debe estar formado únicamente por letras y números."
}-
- Ya existe una categoría con este nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "Ya existe un color con este nombre."
}- 400 Error inesperado: Error en el servicio.
{
"status": 400,
"message": "Error: Error inesperado.",
"data": null,
"errors": "Descripción del errors inesperado"
}- 400 Error de tipo de argumento: Cuando el dto enviado no tiene el formato correspondiente.
{
"status": 400,
"message": "Error de tipo de argumento",
"data": null,
"errors": "El parámetro 'id' debe ser un número entero válido."
}-
Endpoint:
PUT /products/color - Descripción: Actualiza un color existente en el sistema.
- Cuerpo de la Solicitud:
-
-
id: integer (obligatorio)
-
-
-
nombre: string (obligatorio, máximo 100 caracteres)
-
{
"id": 1, //int
"nombre": "nombre color" //String
}- Respuestas:
- 201 Created: Color actualizado exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 404 Not Found: El ID no corresponde a ningun color.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró el color con el ID."
}- 400 Bad Request:
-
- El color no se puede modificar porque está eliminado.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "No se puede modificar un objeto que está eliminado."
}-
- El color debe tener un nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "El color debe de tener un nombre."
}
-
- El nombre contiene caracteres no permitidos.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "El nombre debe estar formado únicamente por letras y números."
}-
- Ya existe un color con este nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "Ya existe un color con este nombre."
}- 400 Error inesperado: Error en el servicio.
{
"status": 400,
"message": "Error: Error inesperado.",
"data": null,
"errors": "Descripción del errors inesperado"
}- 400 Error de tipo de argumento: Cuando el dto enviado no tiene el formato correspondiente.
{
"status": 400,
"message": "Error de tipo de argumento",
"data": null,
"errors": "El parámetro 'id' debe ser un número entero válido."
}-
Endpoint:
DELETE /products/color/{id} - Descripción: Eliminar un color.
- Parámetros de Ruta:
-
-
id: integer (obligatorio)
-
- Respuestas:
- 200 OK: Color eliminado exitosamente.
{
"status": 200,
"message": "OK.",
"data": {
"id": 1,
"nombre": "Azul",
"fechaEliminacion": "2024-09-28T12:34:56"
},
"errors": null
}- 400 Bad Request:
-
- El color ya está eliminado.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "El color ya se encuentra eliminado, se debe enviar el id de un color no eliminado."
}-
- 404 Not Found: El ID no corresponde a ningún color.
{
"status": 404,
"message": "Error: Not Found.",
"data": null,
"errors": "El id no corresponde a ningun color, se debe enviar el id de un color existente."
}- 500 Error inesperado: Error en el servicio.
{ "status": 400, "message": "Error: Error inesperado.", "data": null, "errors": "Descripción del errors inesperado" }
- 400 Error de tipo de argumento: Cuando el id enviado no es un int.
{
"status": 400,
"message": "Error de tipo de argumento",
"data": null,
"errors": "El parámetro 'id' debe ser un número entero válido."
}-
Endpoint:
PUT /products/color/recuperar/{id} - Descripción: Recupera un color que ha sido eliminado.
- Parámetros de Ruta:
-
-
id: integer (obligatorio)
-
- Respuestas:
- 200 OK: Color recuperado exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- El color no está eliminado.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "El color no está eliminado."
}-
- 404 Not Found: El ID no corresponde a ningun color.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró el color con el ID."
}- 500 Error inesperado: Error en el servicio.
{ "status": 400, "message": "Error: Error inesperado.", "data": null, "errors": "Descripción del errors inesperado" }
- 400 Error de tipo de argumento: Cuando el id enviado no es un int.
{
"status": 400,
"message": "Error de tipo de argumento",
"data": null,
"errors": "El parámetro 'id' debe ser un número entero válido."
}-
Endpoint:
GET /products/colors - Descripción: Obtiene una lista de todos los colores.
- Respuestas:
- 200 OK: Lista de colores devuelta exitosamente.
{
"status": 200,
"message": "OK",
"data": [
{
"id": 1,
"nombre": "Azul"
},
{
"id": 2,
"nombre": "Amarillo"
}
],
"errors": null
}- 400 Bad Request:
-
- No existen colors.
{
"status": 400,
"message": "Bad request",
"data": null,
"errors": "No hay colores creados."
}-
Endpoint:
GET /products/color/{id} - Descripción: Obtiene un color específico por su ID.
-
Parámetros de Ruta:
**
id: integer (obligatorio) - Respuestas:
- 200 OK: Color devuelto exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- No se encontró el color con el ID.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró el color con el ID."
}-
- No se puede traer un objeto que está eliminado.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "No se puede traer un objeto que esté eliminado."
}- 400 Error inesperado: Error en el servicio.
{
"status": 400,
"message": "Error: Error inesperado.",
"data": null,
"errors": "Descripción del errors inesperado"
}- 400 Error de tipo de argumento: Cuando el id pasado no es un int.
{
"status": 400,
"message": "Error de tipo de argumento",
"data": null,
"errors": "El parámetro 'id' debe ser un número entero válido."
}Como administrador, quiero crear un color para que esté disponible en el sistema.
- Given El servicio de colores está disponible
-
Scenario: Enviar un color válido
- Given Que el cuerpo del request contiene un nombre válido
-
When Realizo un POST a
/products/colorcon los datos - Then La respuesta debe ser un código 201
- And La respuesta debe contener un objeto de color creado
- And El mensaje de respuesta debe ser "Created."
Probado
-
Scenario: Enviar un cuerpo sin un nombre
- Given Que el cuerpo del request no contiene un nombre
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "No se envió un nombre para el color."
Probado
-
Scenario: Enviar un nombre con caracteres no válidos
- Given Que el cuerpo del request contiene un nombre con caracteres no permitidos (comas, puntos, signos matemáticos, caracteres especiales)
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El nombre debe estar formado únicamente por letras y números."
Probado
-
Scenario: Enviar un nombre que ya existe y está eliminado
- Given Que el cuerpo del request contiene un nombre de un color eliminado
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 201
- And El color debe ser recuperado
- And El mensaje de respuesta debe ser "Created."
Probado
-
Scenario: Enviar un nombre que ya existe y no está eliminado
- Given Que el cuerpo del request contiene un nombre de un color existente no eliminado
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Ya existe un color con este nombre."
Probado
-
Scenario: Enviar una categoría sin formato correcto en el nombre
- Given Que el cuerpo del request contiene un nombre con formato incorrecto (espacios extra)
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 200
- And El nombre debe ser capitalizado y corregido
- And El mensaje de respuesta debe ser "Created."
Probado
-
Scenario: Error inesperado durante la creación
- Given Que el servicio de color falla inesperadamente
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Error: Error inesperado."
Probado
-
Scenario: Enviar un argumento de tipo incorrecto
- Given Que el nombre no es del tipo correcto en el cuerpo del request
-
When Realizo un POST a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El parámetro debe ser un número entero válido."
Probado
Como administrador, quiero actualizar un color existente para mantener los datos actualizados en el sistema.
- Given El servicio de colores está disponible
-
Scenario: Actualizar un color válido
- Given Que el cuerpo del request contiene un ID válido y un nombre válido
-
When Realizo un PUT a
/products/colorcon los datos - Then La respuesta debe ser un código 201
- And La respuesta debe contener un objeto de color actualizado
- And El mensaje de respuesta debe ser "Created."
Probado
-
Scenario: Enviar un color sin ID
- Given Que el cuerpo del request no contiene un ID
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 404
- And El mensaje de respuesta debe ser "El ID no corresponde a ningun color."
Probado
-
Scenario: Enviar un color con ID de una color eliminado
- Given Que el cuerpo del request contiene un ID de un color eliminado
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El color no se puede modificar debido a que se encuentra eliminado."
Probado
-
Scenario: Enviar un color sin nombre
- Given Que el cuerpo del request contiene un ID válido pero sin nombre
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El color debe tener un nombre."
Probado
-
Scenario: Enviar un nombre con caracteres no válidos
- Given Que el cuerpo del request contiene un ID válido y un nombre con caracteres no permitidos
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El nombre debe estar formado únicamente por letras y numeros."
Probado
-
Scenario: Enviar un nombre de un color que ya existe
- Given Que el cuerpo del request contiene un ID válido y un nombre de un color existente
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Ya existe un color con este nombre, no puede haber dos colores con el mismo nombre."
Probado
-
Scenario: Error inesperado durante la actualización
- Given Que el servicio de categorías falla inesperadamente
-
When Realizo un PUT a
/products/color - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Error: Error inesperado."
Probado
Como administrador, quiero recuperar un color eliminado para reutilizarlo en el sistema.
- Given El servicio de colores está disponible
-
Scenario: Recuperar un color eliminado correctamente
- Given Que el color con el ID proporcionado está eliminado
-
When Realizo un PUT a
/products/color/recuperar/{id} - Then La respuesta debe ser un código 200
- And El mensaje de respuesta debe ser "OK."
Probado
-
Scenario: Recuperar un color que no está eliminado
- Given Que el color con el ID proporcionado no está eliminado
-
When Realizo un PUT a
/products/color/recuperar/{id} - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El color ya no se encuentra eliminado, se debe enviar el ID de un color eliminado."
Probado
-
Scenario: Recuperar un color con un ID inexistente
- Given Que no existe un color con el ID proporcionado
-
When Realizo un PUT a
/products/color/recuperar/{id} - Then La respuesta debe ser un código 404
- And El mensaje de respuesta debe ser "El ID no corresponde a ningún color."
Probado
-
Scenario: Error inesperado durante la recuperación
- Given Que el servicio de colores falla inesperadamente
-
When Realizo un PUT a
/products/color/recuperar/{id} - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Error: Error inesperado."
Probado
-
Scenario: Enviar un parámetro de tipo incorrecto para el ID
- Given Que el ID proporcionado no es un entero
-
When Realizo un PUT a
/products/color/recuperar/{id} - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "El parámetro '{id}' debe ser un número entero válido."
Probado
Como cliente, quiero obtener todos los colores para ver las disponibles en el sistema.
-
Scenario: Obtener todos los colores exitosamente.
- Given Soy un cliente
-
When Envío un GET a
/products/colors - Then La respuesta debe ser un código 200
- And El cuerpo de la respuesta debe contener una lista de colores
- And Cada color debe tener atributos válidos como "id" y "nombre."
Probado
-
Scenario: Obtener todos los colores exitosamente
- Given Soy un cliente
- And No existe ningún color
-
When Envío un GET a
/products/color/1 - Then La respuesta debe ser un código 200
- And El cuerpo de la respuesta debe contener una lista vacía
- And El cuerpo de la respuesta debe contener el mensaje "No hay colores creados."
Probado
Como cliente, quiero obtener un color por su ID para ver los detalles del color específico.
-
Scenario: Obtener color por ID exitosamente
- Given Soy un cliente
- And Existe un color con el ID 1
-
When Envío un GET a
/products/color/1 - Then La respuesta debe ser un código 200
- And El cuerpo de la respuesta debe contener el color con ID 1
- And El color debe tener un atributo válido "nombre."
Probado
-
Scenario: Obtener color con ID inexistente
- Given Soy un cliente
- And No existe un color con el ID 999
-
When Envío un GET a
/products/color/999 - Then La respuesta debe ser un código 400
- And El cuerpo de la respuesta debe contener el mensaje "No se encontró el color con el ID."
Probado
-
Scenario: Obtener color eliminado
- Given Soy un cliente
- And Existe un color con el ID 2 pero está marcada como eliminado
-
When Envío un GET a
/products/color/2 - Then La respuesta debe ser un código 400
- And El cuerpo de la respuesta debe contener el mensaje "No se puede traer un objeto que esté eliminado."
Probado
-
Scenario: Obtener color con ID inválido
- Given Soy un cliente
-
When Envío un GET a
/products/color/abc - Then La respuesta debe ser un código 400
- And El cuerpo de la respuesta debe contener el mensaje "El parámetro 'id' debe ser un número entero válido."
Probado
DOCUMENTACIÓN GENERAL
- Exclusiones
- Herramientas de Tracking
- Meetings
- Plan de Proyecto
- Plan de Comunicación
- Product Backlog del Proyecto
- Product Backlog del MVP
- Plan de Testing
- Plan de Gestión de la Configuración
- Investigación IOT
- Backlog de fallas
- Backlog de cambios
- Backlog de sugerencias
SPRINT N°1
SPRINT N° 2
SPRINT N° 3
DOCUMENTACIÓN FRONTEND
DOCUMENTACIÓN BACKEND