-
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().