-
Notifications
You must be signed in to change notification settings - Fork 1
Testing
En esta página se detallan las clases de equivalencia, los valores máximos y mínimos y la conjetura de errores a tener en cuenta para realizar los Tests de cada una de las clases del código que se ven a continuación:

- Código postal válido y restaurantes encontrados.
- Código postal válido pero sin restaurantes asociados.
- Código postal inválido (formato incorrecto o nulo).
- Longitud máxima del código postal según el sistema (por ejemplo, 10 caracteres).
- Código postal vacío o nulo genera excepciones.
- Base de datos no responde o lista de restaurantes es nula.
- ID de restaurante válido.
- ID de restaurante inválido (no existe o formato incorrecto).
- ID de restaurante en el rango máximo permitido por la base de datos.
- Operaciones con IDs inexistentes generan errores no manejados.
- Duplicados en favoritos o errores al eliminarlos.
- Usuario con favoritos.
- Usuario sin favoritos.
- Usuario no autenticado.
- Error en la capa de acceso a datos.
- ID de restaurante válido.
- ID de restaurante inválido.
- ID dentro del rango máximo permitido.
- Restaurante no encontrado o acceso no autorizado.
- Cliente con pedidos en curso.
- Cliente sin pedidos en curso.
- Error al buscar pedidos.
- Pedido con información incompleta.
- Pedido existente en estado válido para cambiar a entregado.
- Pedido inexistente o en estado no válido.
- Pedido no encontrado genera errores.
- Problemas al actualizar la base de datos.
- Cliente con pedidos anteriores.
- Cliente sin pedidos anteriores.
- Error en la base de datos.
- Información incompleta de pedidos.
- Pedido y servicio de entrega válidos.
- Pedido no encontrado o sin servicio de entrega asociado.
- Valoración fuera del rango esperado.
- Pedido en estado no válido para valoración.
- Cliente válido con dirección válida.
- Cliente inexistente.
- Dirección con datos incompletos genera errores al guardar.
- Cliente con direcciones.
- Cliente sin direcciones.
- Cliente no autenticado.
-
Usuario existe:
- Contraseña correcta.
- Contraseña incorrecta.
- Usuario no existe.
-
Usuario:
- Longitud mínima del nombre de usuario: 1 carácter.
- Longitud máxima del nombre de usuario: depende del sistema, comúnmente 255 caracteres.
-
Contraseña:
- Longitud mínima de contraseña: 1 carácter.
- Longitud máxima de contraseña: 255 caracteres.
- Usuario duplicado genera un fallo al intentar registro.
- Nombres de usuario o contraseñas con caracteres especiales no son manejados correctamente.
- Contraseñas sin cifrar almacenadas accidentalmente (verificar hash).
- Errores al trabajar con datos nulos o vacíos.
- Errores de acceso a base de datos (conexiones perdidas, tablas inexistentes).
-
Usuario no existe:
- Contraseña válida.
- Rol válido.
- Usuario ya existe.
-
Usuario:
- Longitud mínima del nombre de usuario: 1 carácter.
- Longitud máxima del nombre de usuario: depende del sistema, comúnmente 255 caracteres.
-
Contraseña:
- Longitud mínima de contraseña: 1 carácter.
- Longitud máxima de contraseña: 255 caracteres.
- Usuario duplicado genera un fallo al intentar registro.
- Nombres de usuario o contraseñas con caracteres especiales no son manejados correctamente.
- Errores al trabajar con datos nulos o vacíos.
-
Usuario no existe:
- Datos adicionales válidos (nombre, apellidos, dirección, etc.).
- Datos adicionales inválidos (valores nulos o vacíos).
- Usuario ya existe.
-
Datos adicionales:
- Nombre, apellidos, dirección: Longitud mínima 1 carácter, longitud máxima 255 caracteres.
- Errores al trabajar con datos nulos o vacíos.
- Errores de acceso a base de datos.
- ID de restaurante válido.
- ID de restaurante no válido.
- Carrito vacío vs. carrito no vacío.
- Restaurante con 0, 1 o múltiples cartas de menú.
- ID de restaurante no encontrado genera error.
- NullPointerException si algún dato no está inicializado correctamente.
- Error al sumar precios si algún plato tiene precio null o valores no válidos.
- Menú existente vs. menú no existente.
- Carrito previamente lleno vs. vacío.
- Menú con 0, 1 o múltiples ítems.
- Repetidos: agregar el mismo menú varias veces.
- Manejo de IDs de menú no existentes o nulos.
- Error si se envía una estructura JSON incorrecta o incompleta.
- Ítem presente en el carrito vs. ítem no presente.
- Carrito vacío al eliminar.
- Intentar eliminar con un ID no existente.
- Fallos si el carrito está vacío o si el ítem a eliminar no está presente.
- Carrito lleno vs. vacío.
- Carrito con un único ítem vs. múltiples ítems.
- Verificar que la operación no produce inconsistencias si se llama varias veces seguidas.
- Cliente registrado vs. cliente no registrado.
- Dirección válida vs. inválida.
- Método de pago válido vs. inválido.
- Pedidos con 0, 1 o múltiples ítems.
- Direcciones inexistentes o duplicadas.
- NullPointerException si falta algún campo requerido.
- Error si el cliente no está autenticado.
- Fallo al registrar un pedido por restricciones de la base de datos.
- Pedidos con o sin servicio de entrega asociado.
- Cliente con 0, 1 o múltiples pedidos pagados.
- Servicio de entrega con y sin dirección asociada.
- Problemas con pedidos sin dirección asociada.
- Error al procesar pedidos sin un cliente válido.
- Repartidor con pedidos asignados vs. sin pedidos.
- Pedidos en diferentes estados (ej. asignado, entregado, en proceso).
- Repartidor sin registro o sin sesión iniciada.
- Pedido con dirección null o incompleta.
- Error si el repartidor no tiene acceso al sistema.
- Error si un pedido no tiene datos completos.
-
Pedido válido (Estado PAGADO):
- Pedido existe y está en estado PAGADO.
-
Pedido no disponible:
- Pedido existe pero no está en estado PAGADO.
-
Pedido no encontrado:
- Pedido no existe en la base de datos.
-
Repartidor válido:
- Repartidor está autenticado y registrado en el sistema.
-
Repartidor no encontrado:
- Repartidor autenticado no está registrado.
-
Error inesperado:
- Excepción durante el proceso.
- Pedido con el ID más bajo posible (1).
- Pedido con un ID muy alto o inexistente.
- Excepción al acceder a la base de datos (DAO).
- Pedido ya asignado previamente.
- Pedido con dependencias nulas (como dirección o repartidor).
-
Repartidor válido:
- El repartidor está autenticado y tiene pedidos asignados.
-
Repartidor válido sin pedidos:
- El repartidor está autenticado pero no tiene pedidos asignados.
-
Repartidor no encontrado:
- Repartidor autenticado no está registrado.
- Repartidor con 0 pedidos asignados.
- Repartidor con múltiples pedidos asignados.
- Pedido asignado con información incompleta (sin dirección).
- Repartidor no autenticado.
-
Repartidor válido:
- Repartidor autenticado y con perfil completo.
-
Repartidor no encontrado:
- Repartidor autenticado no está registrado.
- Repartidor con valores límite en sus datos personales (nombre más corto, valoraciones extremas).
- Repartidor con datos incompletos.
- Repartidor no autenticado.
Clases de equivalencia:
- CE1: menuId corresponde a un menú existente en la base de datos.
- CE2: menuId no corresponde a un menú en la base de datos.
- CE3: menuId es null o un valor inválido (ej. negativo).
Valores límite:
- VL1: menuId = 0.
- VL2: menuId = Long.MAX_VALUE.
- VL3: menuId tiene un formato no esperado (ej. cadena de texto).
Conjeturas de errores:
- Error en la conexión a la base de datos.
- La base de datos retorna un error inesperado al intentar eliminar el menú.
Clases de equivalencia:
- CE1: platoId corresponde a un plato existente y puede ser eliminado.
- CE2: platoId no corresponde a un plato existente.
- CE3: platoId es null o un valor inválido.
- CE4: El plato está asociado a un menú y no puede ser eliminado.
Valores límite:
- VL1: platoId = 0.
- VL2: platoId = Long.MAX_VALUE.
- VL3: platoId tiene un formato incorrecto (ej. texto).
Conjeturas de errores:
- Restricciones de clave foránea impiden eliminar el plato.
- Error en la capa DAO o en la base de datos.
Clases de equivalencia:
- CE1: El restaurante existe y se actualizan correctamente los datos.
- CE2: El restaurante no existe.
- CE3: Los datos del restaurante (nombre, dirección) son inválidos o nulos.
Valores límite:
- VL1: Nombre o dirección con longitud 0.
- VL2: Nombre o dirección con longitud máxima permitida.
- VL3: ID del restaurante con valor límite (ej. Long.MAX_VALUE).
Conjeturas de errores:
- Error en la validación de datos (ej. nombres demasiado largos).
- La base de datos no permite la actualización por restricciones de integridad.
Clases de equivalencia:
- Ítem válido (con precio no nulo y positivo).
- Ítem inválido (precio nulo o negativo).
Valores límite:
- Carrito vacío antes de agregar un ítem.
- Carrito con un solo ítem vs. varios ítems.
Conjeturas de errores:
- Verificar que el precio del ítem no sea negativo o nulo.
- Asegurar que el precio total se actualice correctamente al agregar un ítem.
Clases de equivalencia:
- Eliminar un ítem que existe en el carrito.
- Intentar eliminar un ítem que no existe en el carrito.
Valores límite:
- Carrito vacío.
- Eliminar el primer ítem, el último ítem o un ítem en medio de la lista.
Conjeturas de errores:
- Verificar que la eliminación de ítems no cause problemas al acceder a la lista (por ejemplo, índices fuera de rango).
Clases de equivalencia:
- Carrito con 0, 1 o múltiples ítems.
Valores límite:
- Carrito vacío (debe devolver 0).
- Carrito con un solo ítem vs. múltiples ítems.
Conjeturas de errores:
- Verificar que se actualice correctamente el precio total cada vez que se agrega o elimina un ítem.
Clases de equivalencia:
- Carrito vacío.
- Carrito con varios ítems.
Valores límite:
- Carrito vacío antes de vaciar.
- Carrito con un solo ítem vs. varios ítems.
Conjeturas de errores:
- Verificar que el carrito se vacíe correctamente sin errores.
El método setRole establece el valor del rol de un usuario asegurándose de que siga el formato "ROLE_". Si el argumento no comienza con "ROLE_", lo antepone.
Clases de Equivalencia:
- Entrada válida sin prefijo "ROLE_"
- Ejemplo: "ADMIN"
- Resultado esperado: "ROLE_ADMIN"
- Entrada válida con prefijo "ROLE_"
- Ejemplo: "ROLE_USER"
- Resultado esperado: "ROLE_USER"
- Entrada vacía o nula
- Ejemplo: "", null
- Resultado esperado: Lanza una excepción (IllegalArgumentException).
- Entrada con caracteres especiales o no alfanuméricos
- Ejemplo: "USER$", "ROLE_123!"
- Resultado esperado: La cadena se modifica o mantiene según las reglas.
Valores Límite:
- Cadena vacía: ""
- Cadena con un único carácter: "A", "R"
- Cadena con el prefijo incompleto: "ROL", "ROLE"
- Cadena extremadamente larga: String con más de 255 caracteres.
Conjeturas de Errores:
- Cadenas nulas o vacías: El método debe validar entradas nulas o vacías y lanzar una excepción.
- Prefijos similares pero incorrectos: Cadenas como "ROLE" (sin guion bajo) deben ser tratadas como no válidas y anteponerse el prefijo.
- Cadena mal formada: Caracteres especiales deben ser aceptados, pero no modificados salvo para cumplir con el prefijo.
Clases de equivalencia:
- Restaurante con cartas de menú asociadas (valor válido y existente).
- Restaurante sin cartas de menú asociadas (valor válido pero sin resultados).
- Restaurante con ID null (valor inválido).
- Restaurante con ID no existente en la base de datos (valor válido pero inexistente).
Valores máximos y mínimos:
- ID de restaurante en el rango permitido (ej. mínimo 1, máximo Long.MAX_VALUE).
Conjeturas de errores:
- NullPointerException si restauranteId es null.
- Consulta mal formada.
Clases de equivalencia:
- menuId válido con carta asociada (valor válido y existente).
- menuId válido pero no asociado a ninguna carta (valor válido pero inexistente).
- menuId nulo (valor inválido).
Valores máximos y mínimos:
- ID de carta en el rango permitido (ej. mínimo 1, máximo Long.MAX_VALUE).
Conjeturas de errores:
- NullPointerException si menuId es null.
- Error al intentar eliminar una carta no existente.
Clases de equivalencia:
- username válido y presente en la base de datos → Retorna un Optional con datos.
- username válido pero no presente en la base de datos → Retorna un Optional.empty().
- username es null → Lanza una excepción o retorna vacío, dependiendo de la implementación.
- username es una cadena vacía o solo espacios → Puede comportarse como no encontrado o lanzar excepción, según implementación.
Valores máximos y mínimos:
- Mínimo: username con 1 carácter.
- Máximo: username con longitud límite razonable (255 caracteres o según restricciones de la base de datos).
Conjeturas de errores:
- Excepción lanzada si username es null.
- Excepción lanzada si username contiene caracteres no válidos o especiales según las reglas de la base de datos.
- Comportamiento inesperado si el username es muy largo o vacío.
- Direcciones válidas:
- Todos los campos requeridos están presentes y cumplen con las restricciones de la entidad.
- Direcciones nulas o inválidas:
- La dirección es
nullo alguno de los campos viola las restricciones de la base de datos.
- La dirección es
- Direcciones con campos opcionales ausentes:
- Solo los campos obligatorios están presentes.
- Dirección con valores mínimos:
- Longitudes de cadenas mínimas y valores numéricos en su límite inferior.
- Dirección con valores máximos:
- Longitudes de cadenas máximas y valores numéricos en su límite superior.
- Si la dirección es
null, puede lanzar unaIllegalArgumentException. - Si hay problemas con la persistencia, puede fallar con una
PersistenceException.
-
pedidoIdválido y existente:- El método retorna la dirección asociada.
-
pedidoIdválido pero inexistente:- No se encuentra una dirección asociada y puede devolver
nullo lanzar una excepción.
- No se encuentra una dirección asociada y puede devolver
-
pedidoIdnulo o negativo:- Genera un comportamiento inesperado o lanza una excepción.
-
pedidoIdmínimo:-
0o1, dependiendo del contexto del negocio.
-
-
pedidoIdmáximo:- El valor máximo permitido por el sistema.
- Si
pedidoIdesnull, puede lanzar una excepción comoIllegalArgumentExceptionoNullPointerException. - Si no se encuentra la dirección asociada, puede lanzar una
NoResultException.
-
Válida:
- La entidad es no nula y tiene datos válidos.
- La operación persiste la entidad y devuelve
1.
-
Inválida:
- La entidad es
null, lanza unaIllegalArgumentException. - La entidad tiene datos no válidos o viola restricciones de la base de datos, devolviendo
0.
- La entidad es
- Entidad con la cantidad mínima de atributos requeridos.
- Entidad con el máximo número de atributos y relaciones complejas.
-
Válida:
- La entidad existe en la base de datos, contiene datos válidos y se actualiza correctamente devolviendo
1.
- La entidad existe en la base de datos, contiene datos válidos y se actualiza correctamente devolviendo
-
Inválida:
- La entidad es
null, lanza unaIllegalArgumentException. - La entidad no existe, devuelve
0. - La entidad contiene datos inválidos, devuelve
0.
- La entidad es
- Entidad con solo los atributos obligatorios.
- Entidad compleja con relaciones a múltiples entidades.
-
Válida:
- La entidad es válida y existe en la base de datos, se elimina y devuelve
1.
- La entidad es válida y existe en la base de datos, se elimina y devuelve
-
Inválida:
- La entidad es
null, lanza unaIllegalArgumentException. - La entidad no existe, devuelve
0.
- La entidad es
- Entidad con el mínimo número de datos necesarios.
- Entidad con relaciones asociadas a otras entidades.
-
Válida:
- El ID es válido y corresponde a un registro existente en la base de datos, devuelve un
Optionalcon la entidad.
- El ID es válido y corresponde a un registro existente en la base de datos, devuelve un
-
Inválida:
- El ID es
nullo no existe en la base de datos, devuelveOptional.empty().
- El ID es
- ID mínimo válido, como
"1". - ID máximo permitido, como
Long.MAX_VALUE.
-
Válida:
- El ID es válido y existe en la base de datos, devuelve un
Optionalcon la entidad.
- El ID es válido y existe en la base de datos, devuelve un
-
Inválida:
- El ID es
nullo no existe en la base de datos, devuelveOptional.empty().
- El ID es
- ID mínimo permitido:
1. - ID máximo permitido por el esquema de base de datos.
-
Válida:
- La base de datos contiene registros, devuelve una lista con todas las entidades.
-
Inválida:
- La base de datos está vacía, devuelve una lista vacía.
- Base de datos vacía.
- Base de datos con el máximo número de registros permitidos.
-
Válidas:
- La base de datos está disponible y accesible.
- Las credenciales son correctas y la URL es válida.
-
Inválidas:
- Base de datos inaccesible, credenciales incorrectas o URL inválida.
- Problemas de red.
- Máximo: Conexión establecida correctamente.
- Mínimo: URL incorrecta, credenciales erróneas o base de datos no disponible.
-
SQLException: Por base de datos no disponible o credenciales/URL incorrectas. -
NullPointerException: Si la conexión no se inicializa correctamente.
-
Válidas:
- Consulta SQL válida que devuelve resultados.
-
Inválidas:
- Consulta SQL con errores de sintaxis o tablas inexistentes.
- Conexión no disponible.
- Resultados nulos o vacíos.
- Máximo: Consulta válida con múltiples registros.
- Mínimo: Consulta que devuelve resultados vacíos.
-
SQLException: Si la consulta tiene errores de sintaxis. -
NullPointerException: Si la conexión esnull.
-
Válidas:
- Sentencia SQL de inserción válida con datos correctos.
-
Inválidas:
- Sentencia SQL inválida.
- Conexión no disponible.
- Violación de restricciones, como claves primarias duplicadas.
- Máximo: Inserción exitosa de múltiples registros.
- Mínimo: Inserción fallida por errores en la sentencia SQL.
-
SQLException: Por errores de sintaxis o restricciones. -
NullPointerException: Si la conexión esnull.
-
Válidas:
- Sentencia SQL de actualización válida que modifica registros.
-
Inválidas:
- Sentencia SQL inválida.
- Conexión no disponible.
- Condiciones incorrectas que no afectan registros.
- Máximo: Actualización exitosa de múltiples registros.
- Mínimo: Sin cambios por condiciones inválidas.
-
SQLException: Por sentencias SQL incorrectas. -
NullPointerException: Si la conexión esnull.
-
Válidas:
- La conexión está abierta y se cierra correctamente.
-
Inválidas:
- La conexión ya está cerrada o no se estableció previamente.
- Máximo: Desconexión exitosa.
- Mínimo: Intentar desconectar sin conexión activa.
-
SQLException: Por errores al cerrar la conexión. -
NullPointerException: Si la conexión esnull.
-
ID válido: El id corresponde a un
ItemMenuexistente. -
ID inexistente: El id no corresponde a ningún
ItemMenu. -
ID nulo: El id es
null.
- ID mínimo válido: 1L (en la mayoría de los sistemas, el ID empieza desde 1).
-
ID máximo permitido:
Long.MAX_VALUE(dependiendo del diseño de la base de datos).
- El método lanza una excepción al recibir un
nullcomo id. - La consulta no encuentra el elemento y retorna un
Optional.empty().
-
ID válido y existente: El
platoIdcorresponde a unItemMenuen la base de datos. -
ID válido pero inexistente: El
platoIdno existe en la base de datos. -
ID nulo: El
platoIdesnull.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- El método intenta eliminar un elemento inexistente y no realiza ninguna acción.
- El método lanza una excepción al recibir un
nullcomoplatoId.
-
Restaurante con ítems: El
restauranteIdcorresponde a un restaurante con ítems asociados. -
Restaurante sin ítems: El
restauranteIdcorresponde a un restaurante sin ítems asociados. -
Restaurante inexistente: El
restauranteIdno corresponde a ningún restaurante. -
ID nulo: El
restauranteIdesnull.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- El método retorna una lista vacía para un restaurante sin ítems.
- El método lanza una excepción si el
restauranteIdesnull. - La consulta JPQL no encuentra ningún ítem debido a un error de configuración de la base de datos.
-
Entidad válida: La entidad
ItemMenucumple con todos los requisitos de persistencia. -
Entidad nula: La entidad es
null. - Entidad inválida: La entidad tiene campos requeridos vacíos o incorrectos.
- Para entidades válidas:
-
Campos de tipo
String: Cadenas mínimas (vacías) y máximas (longitud máxima aceptada por la base de datos). -
Campos numéricos (
Long,Double): Mínimo permitido (0) y máximo permitido (Long.MAX_VALUEo similar).
-
Campos de tipo
- El método lanza una excepción al recibir una entidad nula.
- La operación falla debido a restricciones de la base de datos (e.g., claves foráneas).
- La entidad ya existe en el caso de
insert.
-
Pedido válido: El objeto
Pedidotiene todos los atributos requeridos correctamente definidos. -
Pedido nulo: El objeto
Pedidoesnull. -
Pedido con atributos inválidos: Atributos del
Pedidono cumplen restricciones de la base de datos (e.g., claves foráneas, valores requeridos).
-
Campos numéricos (IDs, totales, etc.):
0(mínimo permitido), valores grandes cercanos aLong.MAX_VALUE. -
Campos de texto: Longitud mínima (
""onull) y máxima (longitud definida por la base de datos).
- Excepción al intentar persistir un
Pedidonulo. - Violación de restricciones en la base de datos por valores inválidos.
- Persistencia fallida debido a problemas en la configuración del
EntityManager.
-
Cliente con pedidos en curso: El cliente tiene pedidos en estados distintos de
ENTREGADO. - Cliente sin pedidos en curso: El cliente no tiene pedidos en curso.
-
Cliente inexistente: No existe ningún cliente con el
clienteIdproporcionado. -
ID de cliente nulo: El
clienteIdesnull.
- ID mínimo válido: 1L (asumiendo que los IDs empiezan desde 1).
-
ID máximo permitido:
Long.MAX_VALUE.
- Excepción si
clienteIdesnull. - Retorno de una lista vacía si no hay pedidos en curso.
- Error de consulta por mal uso del parámetro
estadoEntregado.
- ID válido: El id corresponde a un pedido existente.
- ID inexistente: El id no corresponde a ningún pedido.
-
ID nulo: El id es
null.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- El método retorna un
Optional.empty()si el id no existe. - El método lanza una excepción si
idesnull.
-
Cliente con pedidos entregados: El cliente tiene pedidos con estado
ENTREGADO. -
Cliente sin pedidos entregados: El cliente no tiene pedidos con estado
ENTREGADO. -
Cliente inexistente: No existe ningún cliente con el
clienteIdproporcionado. -
ID de cliente nulo: El
clienteIdesnull.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- El método retorna una lista vacía si no hay pedidos entregados.
- Excepción si el
clienteIdesnull.
-
Existen pedidos pagados: La base de datos tiene pedidos con estado
PAGADO. -
No existen pedidos pagados: No hay pedidos con estado
PAGADO.
- Este método no depende de parámetros, por lo que no hay valores límite.
- Retorno de una lista vacía si no hay pedidos pagados.
- Error en la consulta si el valor
EstadoPedido.PAGADOno está correctamente definido o configurado.
-
Existen IDs de repartidores: La tabla
repartidortiene registros, y el método devuelve una lista de IDs. -
No existen IDs de repartidores: La tabla
repartidorestá vacía, y el método devuelve una lista vacía.
- Cantidad mínima de IDs: 0 (cuando no hay registros en la tabla).
- Cantidad máxima de IDs: Gran cantidad de registros (simular carga con miles de IDs).
- El método lanza una excepción si hay un error en la consulta SQL nativa.
- El método retorna
nullen lugar de una lista vacía. - La consulta SQL contiene errores de sintaxis o referencia a una tabla incorrecta.
-
Usuario válido y existente: El
usernamecorresponde a un usuario existente, y el método devuelve unOptional<Repartidor>con el repartidor correspondiente. -
Usuario válido pero inexistente: El
usernameno corresponde a ningún usuario, y el método devuelve unOptional.empty(). -
Username nulo: El método lanza una excepción (
IllegalArgumentException) porque no se permite un parámetro nulo.
-
Longitud mínima del
username: Cadena vacía o un único carácter. -
Longitud máxima del
username: Depende del esquema de base de datos (e.g., 255 caracteres).
- El método lanza una excepción si el parámetro
usernameesnull. - La consulta JPQL falla debido a un error de sintaxis o configuración.
- El método retorna una lista en lugar de un
Optionalal usargetResultList.
-
Usuario válido y existente: El
Usuariocorresponde a unRestauranteasociado. -
Usuario válido pero inexistente: El
Usuariono tiene unRestauranteasociado. -
Usuario nulo: El parámetro
usuarioesnull.
- Nombre de usuario mínimo válido: Un carácter ("a").
- Nombre de usuario máximo válido: Longitud máxima permitida en la base de datos (e.g., 255 caracteres).
- Excepción si
usuarioesnull. - Retorno de
Optional.empty()si no se encuentra ningúnRestaurante. - Error en la consulta JPQL debido a mal uso del parámetro.
- Código postal válido con restaurantes asociados: Hay restaurantes con direcciones que contienen el código postal.
- Código postal válido sin restaurantes asociados: No hay restaurantes que coincidan con el código postal.
-
Código postal nulo o vacío: El parámetro es
nullo una cadena vacía.
- Código postal mínimo válido: Longitud mínima aceptada (1 carácter).
- Código postal máximo válido: Longitud máxima permitida en la base de datos (e.g., 10 caracteres).
- Excepción si el código postal es
null. - Error de consulta si el formato de la dirección en la base de datos no es consistente.
- ID de restaurante válido con cartas asociadas: Hay cartas de menú asociadas al restaurante.
- ID de restaurante válido sin cartas asociadas: No hay cartas de menú asociadas.
-
ID de restaurante inexistente: No existe un restaurante con el
restauranteIdproporcionado. -
ID de restaurante nulo: El parámetro
restauranteIdesnull.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- Excepción si
restauranteIdesnull. - Retorno de una lista vacía si no hay cartas asociadas.
- Error en la consulta JPQL por mal uso del parámetro
restauranteId.
- Cantidad válida con suficientes restaurantes: Hay más o igual restaurantes disponibles que la cantidad solicitada.
- Cantidad válida con insuficientes restaurantes: Hay menos restaurantes disponibles que la cantidad solicitada.
- Cantidad negativa o 0: La cantidad solicitada no es válida.
- Cantidad mínima válida: 1.
- Cantidad máxima: Gran número (e.g., 1000).
- Excepción si la cantidad solicitada es 0 o negativa.
- Retorno de una lista vacía si no hay restaurantes disponibles.
- Error en la consulta JPQL debido a problemas con la función
RAND().
-
ID válido y existente: El
pedidoIdcorresponde a un pedido con un servicio de entrega asociado. -
ID válido pero inexistente: El
pedidoIdno tiene un servicio de entrega asociado. -
ID nulo: El
pedidoIdesnull.
- ID mínimo válido: 1L (suponiendo que los IDs comienzan desde 1).
-
ID máximo permitido:
Long.MAX_VALUE.
- Excepción si
pedidoIdesnull. - Retorno de un
Optional.empty()si no se encuentra un servicio de entrega asociado. - Error de consulta debido a un mal uso del parámetro en JPQL.
- Estado válido con servicios asociados: El estado corresponde a servicios de entrega en la base de datos.
- Estado válido sin servicios asociados: No hay servicios con ese estado.
-
Estado nulo: El parámetro
estadoesnull.
-
Todos los valores del enum
EstadoPedido: Se deben cubrir todos los posibles valores definidos en el enum, comoPAGADO,RECOGIDO,ENTREGADO, etc.
- El método retorna una lista vacía si no hay servicios con el estado dado.
- Excepción si el parámetro
estadoesnull. - Error en JPQL si el estado no está correctamente definido en la consulta.
-
ID válido con servicios asociados: El
repartidorIdtiene servicios de entrega asignados. -
ID válido sin servicios asociados: No hay servicios asignados a ese
repartidorId. -
ID inexistente: El
repartidorIdno corresponde a ningún repartidor. -
ID nulo: El
repartidorIdesnull.
- ID mínimo válido: 1L.
-
ID máximo permitido:
Long.MAX_VALUE.
- Excepción si
repartidorIdesnull. - El método retorna una lista vacía si no hay servicios asignados.
- Error en JPQL si el parámetro no está correctamente definido.
-
Username válido y existente: El
usernamecorresponde a un usuario registrado en la base de datos. -
Username válido pero inexistente: El
usernameno corresponde a ningún usuario. -
Username nulo o vacío: El parámetro
usernameesnullo una cadena vacía.
-
Longitud mínima del
username: Cadena vacía o un carácter. -
Longitud máxima del
username: Longitud máxima definida en la base de datos (e.g., 255 caracteres).
- Excepción si
usernameesnullo vacío. - Retorno de
Optional.empty()si no se encuentra un usuario. - Error en JPQL debido a mal uso del parámetro
username.
-
Username válido y existente: El
usernamecorresponde a un usuario con un rol definido. -
Username válido pero inexistente: El
usernameno corresponde a ningún usuario. -
Username nulo o vacío: El parámetro
usernameesnullo una cadena vacía.
-
Longitud mínima del
username: Cadena vacía o un carácter. -
Longitud máxima del
username: Longitud máxima definida en la base de datos (e.g., 255 caracteres).
- Excepción si
usernameesnullo vacío. - Error si el usuario no tiene un rol asignado en la base de datos.
- Error en JPQL debido a un mal uso del parámetro
username.
- Código postal válido y existente: El código postal corresponde a una región con restaurantes disponibles.
- Código postal válido pero sin restaurantes: El código postal es válido pero no hay restaurantes asociados a esa área.
- Código postal inválido: El código postal tiene un formato incorrecto (e.g., "abcd1234").
-
Código postal nulo o vacío: El parámetro
codigoPostalesnullo una cadena vacía.
- Longitud mínima: Código postal con solo 1 carácter (o incluso vacío).
- Longitud máxima: Código postal de longitud máxima válida en la base de datos o formato esperado (por ejemplo, 5 dígitos o más si se permite).
- Excepción si el código postal es
nullo vacío. - Excepción si el formato del código postal es incorrecto.
- Devuelve una lista vacía si no hay restaurantes asociados al código postal.
- ID de restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
- ID de restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
-
ID de restaurante nulo: El parámetro
idRestauranteesnullo no se ha proporcionado un valor. - Cliente válido: El cliente está autenticado y existe en la base de datos.
- Cliente no encontrado: El cliente no existe en la base de datos (puede ser que el ID de cliente no esté disponible o el cliente no esté autenticado).
- ID mínimo: El ID es 1L (el primer ID válido de restaurante).
- ID máximo: El ID más alto permitido por el sistema (dependiendo de la base de datos, por ejemplo, el último restaurante registrado).
- Excepción si el restaurante no existe.
- Excepción si el cliente no está autenticado o no se encuentra.
- El cliente ya tiene este restaurante en sus favoritos (es posible que se maneje como una excepción o una no acción).
- Error si el
idRestauranteesnull.
- ID de restaurante válido y existente en los favoritos: El restaurante está en la lista de favoritos del cliente.
- ID de restaurante válido pero no está en los favoritos: El restaurante no está en la lista de favoritos del cliente.
-
ID de restaurante nulo o vacío: El parámetro
idRestauranteesnullo no se ha proporcionado.
- ID mínimo: El ID es 1L (el primer restaurante en la lista de favoritos).
- ID máximo: El ID más alto del restaurante almacenado en los favoritos del cliente.
- Excepción si el restaurante no está en los favoritos del cliente.
- Excepción si el
idRestauranteesnullo no válido. - Excepción si el cliente no está autenticado o no se encuentra en la base de datos.
- Cliente con favoritos: El cliente tiene uno o más restaurantes en su lista de favoritos.
- Cliente sin favoritos: El cliente no tiene restaurantes en su lista de favoritos.
- Cliente no autenticado: El cliente no está autenticado o no existe en la base de datos.
- Número mínimo de favoritos: 0 (el cliente no tiene favoritos).
- Número máximo de favoritos: El número máximo de restaurantes que el cliente puede tener en la lista de favoritos (esto puede depender de la implementación de la base de datos).
- Excepción si el cliente no está autenticado o no se encuentra en la base de datos.
- Devuelve una lista vacía si no se tienen favoritos.
- ID de restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
- ID de restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
-
ID de restaurante nulo o vacío: El parámetro
restauranteIdesnullo no se ha proporcionado.
- ID mínimo: El ID más pequeño permitido, por ejemplo, el primer restaurante creado.
- ID máximo: El ID máximo válido según la base de datos.
- Excepción si el restaurante no existe.
- Excepción si el
restauranteIdesnuloo vacío. - Excepción si el restaurante no tiene menús disponibles.
- Restaurantes destacados disponibles: Hay al menos 4 restaurantes destacados en la base de datos.
- Restaurantes destacados no disponibles: No hay suficientes restaurantes destacados disponibles.
- Número mínimo de restaurantes destacados: 4 (se obtienen 4 restaurantes aleatorios).
- Número máximo de restaurantes destacados: El máximo disponible, que podría estar limitado por el tamaño de la base de datos.
- Excepción si no hay restaurantes destacados suficientes.
- Excepción si se produce un error al intentar obtener restaurantes aleatorios.
- Cliente autenticado: El cliente está autenticado correctamente en el sistema.
- Cliente no autenticado: El cliente no está autenticado (por ejemplo, no hay usuario en el contexto de seguridad).
- Longitud mínima: No aplica directamente, pero si se requiere una longitud, el nombre de usuario debe tener al menos un carácter.
- Longitud máxima: Depende de las restricciones de la base de datos o del sistema de autenticación.
- Excepción si el cliente no está autenticado.
- Excepción si el cliente no existe en la base de datos.
- Excepción si el
usernameobtenido no está presente en la base de datos.
- Restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
- Restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
- Restaurante con campos válidos: Los campos del restaurante (nombre, dirección) son válidos.
- Restaurante con campos inválidos: Los campos del restaurante contienen valores inválidos o vacíos.
-
Restaurante nulo: El parámetro
restauranteesnull.
- ID mínimo de restaurante: El restaurante tiene el ID más bajo posible (por ejemplo, 1).
- ID máximo de restaurante: El restaurante tiene el ID más alto permitido por la base de datos.
- Longitud mínima para nombre y dirección: 1 carácter.
- Longitud máxima para nombre y dirección: Depende de la base de datos, por ejemplo, 255 caracteres.
- Excepción si el restaurante no existe en la base de datos.
- Excepción si el objeto
restauranteesnull. - Error si se proporcionan valores inválidos o vacíos para los campos nombre o dirección.
- Error si hay un problema al realizar la actualización en la base de datos.
- Carta de menú válida y existente: La carta de menú con el ID proporcionado existe en la base de datos.
- Carta de menú válida pero inexistente: La carta de menú con el ID proporcionado no existe en la base de datos.
- Carta de menú con campos válidos: Los campos de la carta de menú (nombre, descripción, items) son válidos.
- Carta de menú con campos inválidos: Los campos de la carta de menú contienen valores inválidos o vacíos.
-
Carta de menú nula: El parámetro
cartaMenuesnull.
- ID mínimo de carta de menú: El ID más bajo de la carta de menú disponible (por ejemplo, 1).
- ID máximo de carta de menú: El ID más alto disponible en la base de datos.
- Longitud mínima para nombre y descripción: 1 carácter.
- Longitud máxima para nombre y descripción: Según la base de datos, por ejemplo, 255 caracteres.
- Número mínimo de items: 0 (sin items).
- Número máximo de items: Depende de la base de datos o las restricciones del sistema.
- Excepción si la carta de menú no existe en la base de datos.
- Excepción si el objeto
cartaMenuesnull. - Error si los campos nombre, descripción o items son inválidos.
- Error si hay un problema al realizar la actualización en la base de datos.
- Item de menú válido y existente: El item de menú con el ID proporcionado existe en la base de datos.
- Item de menú válido pero inexistente: El item de menú con el ID proporcionado no existe en la base de datos.
- Item de menú con campos válidos: Los campos del item de menú (nombre, descripción, precio) son válidos.
- Item de menú con campos inválidos: Los campos del item de menú contienen valores inválidos o vacíos.
-
Item de menú nulo: El parámetro
itemMenuesnull.
- ID mínimo de item de menú: El ID más bajo de los items de menú disponibles (por ejemplo, 1).
- ID máximo de item de menú: El ID más alto disponible en la base de datos.
- Longitud mínima para nombre y descripción: 1 carácter.
- Longitud máxima para nombre y descripción: Según la base de datos, por ejemplo, 255 caracteres.
- Precio mínimo: El precio no puede ser negativo o cero.
- Precio máximo: El precio máximo permitido según las restricciones del sistema.
- Excepción si el item de menú no existe en la base de datos.
- Excepción si el objeto
itemMenuesnull. - Error si los campos nombre, descripción, o precio son inválidos o están vacíos.
- Error si el precio es un valor negativo o no válido.
- Error si hay un problema al realizar la actualización en la base de datos.
-
Entrada Válida:
- Usuario y contraseña correctos (autenticación exitosa).
- El usuario tiene un rol válido: CLIENTE, REPARTIDOR, RESTAURANTE.
-
Entrada Inválida:
- Usuario incorrecto.
- Contraseña incorrecta.
- Rol desconocido (no pertenece a CLIENTE, REPARTIDOR ni RESTAURANTE).
- Usuario con un rol que no tiene el prefijo
ROLE_.
- Usuario: El tamaño máximo de un nombre de usuario debe ser razonable (ejemplo: 255 caracteres).
- Contraseña: Contraseña de longitud mínima y máxima, por ejemplo, mínimo 6 caracteres, máximo 20.
- Si el sistema no valida correctamente el rol del usuario y no le asigna un valor con el prefijo
ROLE_, se debería devolver un error.
-
Positivos:
- Usuario con rol CLIENTE y credenciales correctas.
- Usuario con rol REPARTIDOR y credenciales correctas.
- Usuario con rol RESTAURANTE y credenciales correctas.
-
Negativos:
- Usuario con nombre de usuario incorrecto.
- Contraseña incorrecta.
- Rol desconocido.
- Usuario con rol sin el prefijo
ROLE_. - Longitud de usuario o contraseña fuera del rango permitido.
-
Entrada Válida:
- Usuario y contraseña válidos, datos del cliente completos.
-
Entrada Inválida:
- El nombre de usuario ya existe en la base de datos.
- Nombre de usuario: Longitud mínima y máxima permitida.
- DNI del cliente: Validez del formato del DNI.
- Si el nombre de usuario ya existe, el sistema debería dar un mensaje de error indicando que no se puede registrar el cliente.
-
Positivos:
- Registro de cliente con un nombre de usuario válido, contraseña válida, y datos del cliente completos.
-
Negativos:
- Intento de registro con un nombre de usuario que ya existe en la base de datos.
- Datos faltantes del cliente (nombre, apellido, DNI).
-
Entrada Válida:
- Usuario y contraseña válidos, datos del repartidor completos.
-
Entrada Inválida:
- El nombre de usuario ya existe.
- DNI del repartidor: Validez del formato del DNI.
- El nombre de usuario ya existe, lo que causaría que no se registre el repartidor.
-
Positivos:
- Registro de repartidor con un nombre de usuario válido, contraseña válida, y datos del repartidor completos.
-
Negativos:
- Intento de registro con un nombre de usuario que ya existe en la base de datos.
- Datos faltantes del repartidor (nombre, apellido, DNI).
-
Entrada Válida:
- Usuario y contraseña válidos, datos del restaurante completos.
-
Entrada Inválida:
- El nombre de usuario ya existe.
- Nombre del restaurante: Longitud máxima permitida para el nombre.
- Dirección del restaurante: Validación de la dirección (mínimo 10 caracteres).
- El nombre de usuario ya existe, lo que causaría que no se registre el restaurante.
-
Positivos:
- Registro de restaurante con un nombre de usuario válido, contraseña válida, y datos del restaurante completos.
-
Negativos:
- Intento de registro con un nombre de usuario que ya existe en la base de datos.
- Datos faltantes del restaurante (nombre, dirección).
-
Entrada Válida:
- Se muestran correctamente los restaurantes destacados en la página de inicio.
-
Positivos:
- Verificación de que la página muestra correctamente los restaurantes destacados.
-
Negativos:
- No se muestran restaurantes si hay un error en la base de datos o en la lógica del backend.
- Cliente con pedidos en curso.
- Cliente sin pedidos en curso.
- Cliente con ID inexistente en la base de datos.
- Cliente ID = null (debería lanzar una excepción).
- Cliente con ID válido, pero con una lista vacía de pedidos.
- Cliente con una lista muy grande de pedidos.
- Pedido existe en la base de datos.
- Pedido no existe en la base de datos.
- ID del pedido = null (debería lanzar una excepción).
- Pedido con un ID muy grande o muy pequeño.
- Pedido tiene un servicio de entrega asociado.
- Pedido no tiene un servicio de entrega asociado.
- Pedido con ID inexistente.
- ID del pedido = null (debería lanzar una excepción).
- Pedido existe y puede ser marcado como entregado.
- Pedido no existe (debería lanzar una excepción).
- Pedido ya entregado (debería mantenerse sin cambios).
- ID del pedido = null (debería lanzar una excepción).
- Cliente tiene pedidos entregados.
- Cliente no tiene pedidos entregados.
- Cliente con ID inexistente.
- Cliente ID = null (debería lanzar una excepción).
- Cliente con una lista vacía de pedidos.
- Cliente con una lista muy grande de pedidos.