-
Notifications
You must be signed in to change notification settings - Fork 1
Sucursal
El modelo Sucursal representa una entidad de una sucursal en el sistema. A continuación, se describen sus atributos y métodos.
-
id(Integer): -
- Clave primaria de la sucursal.
-
- Se genera automáticamente con la estrategia
GenerationType.IDENTITY.
- Se genera automáticamente con la estrategia
-
nombre(String): -
- Nombre de la sucursal.
-
- 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 la sucursal fue eliminada (si es que lo fue).
-
- Puede ser
nullsi la sucursal no está eliminada.
- Puede ser
-
Endpoint:
POST /products/sucursal - Descripción: Crea una nueva sucursal en el sistema.
- Cuerpo de la Solicitud:
-
-
nombre: string (obligatorio, máximo 100 caracteres)
-
{
"nombre": "nombre sucursal" //String
}- Respuestas:
- 201 Created: Sucursal creada exitosamente (Esto aplica tanto para cuando se crea una sucursal, o cuando se quiere crear una sucursal con el mismo nombre que una sucursal eliminada, en ese caso lo que se hace es recuperar dicha sucursal).
{
"status": 201,
"message": "Created.",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- No se envió un nombre para la sucursal.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "No se envió un nombre para la sucursal."
}-
- 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 sucursal con este nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "Ya existe una sucursal 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/sucursal - Descripción: Actualiza una sucursal existente en el sistema.
- Cuerpo de la Solicitud:
-
-
id: integer (obligatorio)
-
-
-
nombre: string (obligatorio, máximo 100 caracteres)
-
{
"id": 1, //int
"nombre": "nombre sucursal" //String
}- Respuestas:
- 201 Created: Sucursal actualizada exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 404 Not Found: El ID no corresponde a ninguna sucursal.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró la sucursal con el ID."
}- 400 Bad Request:
-
- La sucursal no se puede modificar porque está eliminada.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "No se puede modificar un objeto que está eliminado."
}-
- La sucursal debe tener un nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "La sucursal 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 una sucursal con este nombre.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "Ya existe una sucursal 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/sucursal/{id} - Descripción: Eliminar una sucursal.
- Parámetros de Ruta:
-
-
id: integer (obligatorio)
-
- Respuestas:
- 200 OK: Sucursal eliminada exitosamente.
{
"status": 200,
"message": "OK.",
"data": {
"id": 1,
"nombre": "Azul",
"fechaEliminacion": "2024-09-28T12:34:56"
},
"errors": null
}- 400 Bad Request:
-
- La sucursal ya está eliminada.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "La sucursal ya se encuentra eliminada, se debe enviar el id de una sucursal no eliminada."
}-
- 404 Not Found: El ID no corresponde a ninguna sucursal.
{
"status": 404,
"message": "Error: Not Found.",
"data": null,
"errors": "El id no corresponde a ninguna sucursal, se debe enviar el id de una sucursal 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/sucursal/recuperar/{id} - Descripción: Recupera una sucursal que ha sido eliminada.
- Parámetros de Ruta:
-
-
id: integer (obligatorio)
-
- Respuestas:
- 200 OK: Sucursal recuperada exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- La sucursal no está eliminada.
{
"status": 400,
"message": "Error: Bad Request.",
"data": null,
"errors": "La sucursal no está eliminada."
}-
- 404 Not Found: El ID no corresponde a ninguna sucursal.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró la sucursal 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/sucursales - Descripción: Obtiene una lista de todas las sucursales.
- Respuestas:
- 200 OK: Lista de sucursales devuelta exitosamente.
{
"status": 200,
"message": "OK",
"data": [
{
"id": 1,
"nombre": "Azul"
},
{
"id": 2,
"nombre": "Amarillo"
}
],
"errors": null
}- 400 Bad Request:
-
- No existen sucursales.
{
"status": 400,
"message": "Bad request",
"data": null,
"errors": "No hay sucursales creadas."
}-
Endpoint:
GET /products/sucursal/{id} - Descripción: Obtiene una sucursal específica por su ID.
-
Parámetros de Ruta:
**
id: integer (obligatorio) - Respuestas:
- 200 OK: Sucursal devuelta exitosamente.
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"nombre": "Azul"
},
"errors": null
}- 400 Bad Request:
-
- No se encontró la sucursal con el ID.
{
"status": 404,
"message": "Error: Not Found",
"data": null,
"errors": "No se encontró la sucursal 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 una sucursal para que esté disponible en el sistema.
- Given El servicio de sucursales está disponible
-
Scenario: Enviar una sucursal válida
- Given Que el cuerpo del request contiene un nombre válido
-
When Realizo un POST a
/products/sucursalcon los datos - Then La respuesta debe ser un código 201
- And La respuesta debe contener un objeto de sucursal 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/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "No se envió un nombre para la sucursal."
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/sucursal - 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 una sucursal eliminada
-
When Realizo un POST a
/products/sucursal - Then La respuesta debe ser un código 201
- And La sucursal debe ser recuperada
- 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 una sucursal existente no eliminada
-
When Realizo un POST a
/products/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Ya existe una sucursal con este nombre."
Probado
-
Scenario: Enviar una sucursal 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/sucursal - 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 sucursales falla inesperadamente
-
When Realizo un POST a
/products/sucursal - 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/sucursal - 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 una sucursal existente para mantener los datos actualizados en el sistema.
- Given El servicio de sucursales está disponible
-
Scenario: Actualizar una sucursal válida
- Given Que el cuerpo del request contiene un ID válido y un nombre válido
-
When Realizo un PUT a
/products/sucursalcon los datos - Then La respuesta debe ser un código 201
- And La respuesta debe contener un objeto de sucursal actualizado
- And El mensaje de respuesta debe ser "Created."
Probado
-
Scenario: Enviar una sucursal sin ID
- Given Que el cuerpo del request no contiene un ID
-
When Realizo un PUT a
/products/sucursal - Then La respuesta debe ser un código 404
- And El mensaje de respuesta debe ser "El ID no corresponde a ninguna sucursal."
Probado
-
Scenario: Enviar una sucursal con ID de una sucursal eliminada
- Given Que el cuerpo del request contiene un ID de una sucursal eliminada
-
When Realizo un PUT a
/products/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "La sucursal no se puede modificar debido a que se encuentra eliminada."
Probado
-
Scenario: Enviar una sucursal sin nombre
- Given Que el cuerpo del request contiene un ID válido pero sin nombre
-
When Realizo un PUT a
/products/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "La sucursal 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/sucursal - 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 una sucursal que ya existe
- Given Que el cuerpo del request contiene un ID válido y un nombre de una sucursal existente
-
When Realizo un PUT a
/products/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Ya existe una sucursal con este nombre, no puede haber dos sucursales con el mismo nombre."
Probado
-
Scenario: Error inesperado durante la actualización
- Given Que el servicio de sucursales falla inesperadamente
-
When Realizo un PUT a
/products/sucursal - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "Error: Error inesperado."
Probado
Como administrador, quiero recuperar una sucursal eliminada para reutilizarla en el sistema.
- Given El servicio de sucursales está disponible
-
Scenario: Recuperar una sucursal eliminada correctamente
- Given Que la sucursal con el ID proporcionado está eliminada
-
When Realizo un PUT a
/products/sucursal/recuperar/{id} - Then La respuesta debe ser un código 200
- And El mensaje de respuesta debe ser "OK."
Probado
-
Scenario: Recuperar una sucursal que no está eliminada
- Given Que la sucursal con el ID proporcionado no está eliminada
-
When Realizo un PUT a
/products/sucursal/recuperar/{id} - Then La respuesta debe ser un código 400
- And El mensaje de respuesta debe ser "La sucursal ya no se encuentra eliminada, se debe enviar el ID de una sucursal eliminada."
Probado
-
Scenario: Recuperar una sucursal con un ID inexistente
- Given Que no existe una sucursal con el ID proporcionado
-
When Realizo un PUT a
/products/sucursal/recuperar/{id} - Then La respuesta debe ser un código 404
- And El mensaje de respuesta debe ser "El ID no corresponde a ninguna sucursal."
Probado
-
Scenario: Error inesperado durante la recuperación
- Given Que el servicio de sucursales falla inesperadamente
-
When Realizo un PUT a
/products/sucursal/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/sucursal/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 todas las sucursales para ver las disponibles en el sistema.
-
Scenario: Obtener todas las sucursales exitosamente.
- Given Soy un cliente
-
When Envío un GET a
/products/sucursales - Then La respuesta debe ser un código 200
- And El cuerpo de la respuesta debe contener una lista de sucursales
- And Cada sucursal debe tener atributos válidos como "id" y "nombre."
Probado
-
Scenario: Obtener todas las sucursales exitosamente
- Given Soy un cliente
- And No existe ninguna sucursal
-
When Envío un GET a
/products/sucursal/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 sucursales creadas."
Probado
Como cliente, quiero obtener una sucursal por su ID para ver los detalles de la sucursal específica.
-
Scenario: Obtener sucursal por ID exitosamente
- Given Soy un cliente
- And Existe una sucursal con el ID 1
-
When Envío un GET a
/products/sucursal/1 - Then La respuesta debe ser un código 200
- And El cuerpo de la respuesta debe contener la sucursal con ID 1
- And La sucursal debe tener un atributo válido "nombre."
Probado
-
Scenario: Obtener sucursal con ID inexistente
- Given Soy un cliente
- And No existe una sucursal con el ID 999
-
When Envío un GET a
/products/sucursal/999 - Then La respuesta debe ser un código 400
- And El cuerpo de la respuesta debe contener el mensaje "No se encontró la sucursal con el ID."
Probado
-
Scenario: Obtener sucursal eliminada
- Given Soy un cliente
- And Existe una sucursal con el ID 2 pero está sucursalda como eliminada
-
When Envío un GET a
/products/sucursal/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 sucursal con ID inválido
- Given Soy un cliente
-
When Envío un GET a
/products/sucursal/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