Skip to content

Testing

Fernando Martín Martín edited this page Dec 4, 2024 · 15 revisions

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:

image

1. GestorClientes

1.1 buscarRestaurantes

Clases de Equivalencia

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

Valores Máximos

  • Longitud máxima del código postal según el sistema (por ejemplo, 10 caracteres).

Conjeturas de Errores

  • Código postal vacío o nulo genera excepciones.
  • Base de datos no responde o lista de restaurantes es nula.

1.2 agregarFavorito y eliminarFavorito

Clases de Equivalencia

  • ID de restaurante válido.
  • ID de restaurante inválido (no existe o formato incorrecto).

Valores Máximos

  • ID de restaurante en el rango máximo permitido por la base de datos.

Conjeturas de Errores

  • Operaciones con IDs inexistentes generan errores no manejados.
  • Duplicados en favoritos o errores al eliminarlos.

1.3 listarFavoritos

Clases de Equivalencia

  • Usuario con favoritos.
  • Usuario sin favoritos.

Conjeturas de Errores

  • Usuario no autenticado.
  • Error en la capa de acceso a datos.

1.4 obtenerRestaurante

Clases de Equivalencia

  • ID de restaurante válido.
  • ID de restaurante inválido.

Valores Máximos

  • ID dentro del rango máximo permitido.

Conjeturas de Errores

  • Restaurante no encontrado o acceso no autorizado.

1.5 obtenerPedidosEnCurso

Clases de Equivalencia

  • Cliente con pedidos en curso.
  • Cliente sin pedidos en curso.

Conjeturas de Errores

  • Error al buscar pedidos.
  • Pedido con información incompleta.

1.6 confirmarRecepcion

Clases de Equivalencia

  • Pedido existente en estado válido para cambiar a entregado.
  • Pedido inexistente o en estado no válido.

Conjeturas de Errores

  • Pedido no encontrado genera errores.
  • Problemas al actualizar la base de datos.

1.7 obtenerPedidosAnteriores

Clases de Equivalencia

  • Cliente con pedidos anteriores.
  • Cliente sin pedidos anteriores.

Conjeturas de Errores

  • Error en la base de datos.
  • Información incompleta de pedidos.

1.8 valorarPedido

Clases de Equivalencia

  • Pedido y servicio de entrega válidos.
  • Pedido no encontrado o sin servicio de entrega asociado.

Conjeturas de Errores

  • Valoración fuera del rango esperado.
  • Pedido en estado no válido para valoración.

1.9 guardarDireccion

Clases de Equivalencia

  • Cliente válido con dirección válida.
  • Cliente inexistente.

Conjeturas de Errores

  • Dirección con datos incompletos genera errores al guardar.

1.10 listarDirecciones

Clases de Equivalencia

  • Cliente con direcciones.
  • Cliente sin direcciones.

Conjeturas de Errores

  • Cliente no autenticado.

2. GestorLogin

2.1 autenticar

Clases de Equivalencia

  • Usuario existe:
    • Contraseña correcta.
    • Contraseña incorrecta.
  • Usuario no existe.

Valores Máximos y Mínimos

  • 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.

Conjeturas de Errores

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

2.2 registrar

Clases de Equivalencia

  • Usuario no existe:
    • Contraseña válida.
    • Rol válido.
  • Usuario ya existe.

Valores Máximos y Mínimos

  • 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.

Conjeturas de Errores

  • 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.

2.3 registrarCliente, registrarRepartidor, registrarRestaurante

Clases de Equivalencia

  • Usuario no existe:
    • Datos adicionales válidos (nombre, apellidos, dirección, etc.).
    • Datos adicionales inválidos (valores nulos o vacíos).
  • Usuario ya existe.

Valores Máximos y Mínimos

  • Datos adicionales:
    • Nombre, apellidos, dirección: Longitud mínima 1 carácter, longitud máxima 255 caracteres.

Conjeturas de Errores

  • Errores al trabajar con datos nulos o vacíos.
  • Errores de acceso a base de datos.

3. GestorPedidos

3.1 realizarPedido

Clases de Equivalencia

  • ID de restaurante válido.
  • ID de restaurante no válido.
  • Carrito vacío vs. carrito no vacío.

Valores Límites

  • Restaurante con 0, 1 o múltiples cartas de menú.

Conjeturas de Errores

  • 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.

3.2 agregarAlCarrito

Clases de Equivalencia

  • Menú existente vs. menú no existente.
  • Carrito previamente lleno vs. vacío.

Valores Límites

  • Menú con 0, 1 o múltiples ítems.
  • Repetidos: agregar el mismo menú varias veces.

Conjeturas de Errores

  • Manejo de IDs de menú no existentes o nulos.
  • Error si se envía una estructura JSON incorrecta o incompleta.

3.3 eliminarDelCarrito

Clases de Equivalencia

  • Ítem presente en el carrito vs. ítem no presente.

Valores Límites

  • Carrito vacío al eliminar.
  • Intentar eliminar con un ID no existente.

Conjeturas de Errores

  • Fallos si el carrito está vacío o si el ítem a eliminar no está presente.

3.4 limpiarCarrito

Clases de Equivalencia

  • Carrito lleno vs. vacío.

Valores Límites

  • Carrito con un único ítem vs. múltiples ítems.

Conjeturas de Errores

  • Verificar que la operación no produce inconsistencias si se llama varias veces seguidas.

3.5 confirmarPedido

Clases de Equivalencia

  • Cliente registrado vs. cliente no registrado.
  • Dirección válida vs. inválida.
  • Método de pago válido vs. inválido.

Valores Límites

  • Pedidos con 0, 1 o múltiples ítems.
  • Direcciones inexistentes o duplicadas.

Conjeturas de Errores

  • 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.

3.6 obtenerPedidosPagados

Clases de Equivalencia

  • Pedidos con o sin servicio de entrega asociado.
  • Cliente con 0, 1 o múltiples pedidos pagados.

Valores Límites

  • Servicio de entrega con y sin dirección asociada.

Conjeturas de Errores

  • Problemas con pedidos sin dirección asociada.
  • Error al procesar pedidos sin un cliente válido.

3.7 obtenerPedidosAsignados

Clases de Equivalencia

  • Repartidor con pedidos asignados vs. sin pedidos.
  • Pedidos en diferentes estados (ej. asignado, entregado, en proceso).

Valores Límites

  • Repartidor sin registro o sin sesión iniciada.
  • Pedido con dirección null o incompleta.

Conjeturas de Errores

  • Error si el repartidor no tiene acceso al sistema.
  • Error si un pedido no tiene datos completos.

4. GestorRepartos

4.1 autoasignarPedido

Clases de Equivalencia

  1. Pedido válido (Estado PAGADO):
    • Pedido existe y está en estado PAGADO.
  2. Pedido no disponible:
    • Pedido existe pero no está en estado PAGADO.
  3. Pedido no encontrado:
    • Pedido no existe en la base de datos.
  4. Repartidor válido:
    • Repartidor está autenticado y registrado en el sistema.
  5. Repartidor no encontrado:
    • Repartidor autenticado no está registrado.
  6. Error inesperado:
    • Excepción durante el proceso.

Valores Límites

  • Pedido con el ID más bajo posible (1).
  • Pedido con un ID muy alto o inexistente.

Conjeturas de Errores

  • Excepción al acceder a la base de datos (DAO).
  • Pedido ya asignado previamente.
  • Pedido con dependencias nulas (como dirección o repartidor).

4.2 obtenerPedidosAsignados

Clases de Equivalencia

  1. Repartidor válido:
    • El repartidor está autenticado y tiene pedidos asignados.
  2. Repartidor válido sin pedidos:
    • El repartidor está autenticado pero no tiene pedidos asignados.
  3. Repartidor no encontrado:
    • Repartidor autenticado no está registrado.

Valores Límites

  • Repartidor con 0 pedidos asignados.
  • Repartidor con múltiples pedidos asignados.

Conjeturas de Errores

  • Pedido asignado con información incompleta (sin dirección).
  • Repartidor no autenticado.

4.3 obtenerPerfilRepartidor

Clases de Equivalencia

  1. Repartidor válido:
    • Repartidor autenticado y con perfil completo.
  2. Repartidor no encontrado:
    • Repartidor autenticado no está registrado.

Valores Límites

  • Repartidor con valores límite en sus datos personales (nombre más corto, valoraciones extremas).

Conjeturas de Errores

  • Repartidor con datos incompletos.
  • Repartidor no autenticado.

5. Gestor restaurantes:

5.1 Método eliminarMenu

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ú.

5.2 Método eliminarItemMenu

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.

5.3 Método editarRestaurante

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.

6. Carrito:

6.1 Método agregarItem

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.

6.2 Método eliminarItem

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

6.3 Método actualizarPrecioTotal

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.

6.4 Método vaciar

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.

7. Usuario:

7.1 Análisis del Método setRole

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:

  1. Entrada válida sin prefijo "ROLE_"
    • Ejemplo: "ADMIN"
    • Resultado esperado: "ROLE_ADMIN"
  2. Entrada válida con prefijo "ROLE_"
    • Ejemplo: "ROLE_USER"
    • Resultado esperado: "ROLE_USER"
  3. Entrada vacía o nula
    • Ejemplo: "", null
    • Resultado esperado: Lanza una excepción (IllegalArgumentException).
  4. 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:

  1. Cadena vacía: ""
  2. Cadena con un único carácter: "A", "R"
  3. Cadena con el prefijo incompleto: "ROL", "ROLE"
  4. Cadena extremadamente larga: String con más de 255 caracteres.

Conjeturas de Errores:

  1. Cadenas nulas o vacías: El método debe validar entradas nulas o vacías y lanzar una excepción.
  2. Prefijos similares pero incorrectos: Cadenas como "ROLE" (sin guion bajo) deben ser tratadas como no válidas y anteponerse el prefijo.
  3. Cadena mal formada: Caracteres especiales deben ser aceptados, pero no modificados salvo para cumplir con el prefijo.

8. CartamenuDAO:

8.1 Método findAllByRestaurante(Long restauranteId)

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.

8.2 Método eliminarCartaMenuPorId(Long menuId)

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.

9. ClienteDAO:

9.1 Método findByUsername(String username)

Clases de equivalencia:

  1. username válido y presente en la base de datos → Retorna un Optional con datos.
  2. username válido pero no presente en la base de datos → Retorna un Optional.empty().
  3. username es null → Lanza una excepción o retorna vacío, dependiendo de la implementación.
  4. 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:

  1. Excepción lanzada si username es null.
  2. Excepción lanzada si username contiene caracteres no válidos o especiales según las reglas de la base de datos.
  3. Comportamiento inesperado si el username es muy largo o vacío.

10. DirecciónDAO

10.1. Método: save(Direccion direccion)

Clases de equivalencia:

  • 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 null o alguno de los campos viola las restricciones de la base de datos.
  • Direcciones con campos opcionales ausentes:
    • Solo los campos obligatorios están presentes.

Valores máximos y mínimos:

  • 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.

Conjeturas de errores:

  • Si la dirección es null, puede lanzar una IllegalArgumentException.
  • Si hay problemas con la persistencia, puede fallar con una PersistenceException.

10.2. Método: findByPedidoId(Long pedidoId)

Clases de equivalencia:

  • pedidoId válido y existente:
    • El método retorna la dirección asociada.
  • pedidoId válido pero inexistente:
    • No se encuentra una dirección asociada y puede devolver null o lanzar una excepción.
  • pedidoId nulo o negativo:
    • Genera un comportamiento inesperado o lanza una excepción.

Valores máximos y mínimos:

  • pedidoId mínimo:
    • 0 o 1, dependiendo del contexto del negocio.
  • pedidoId máximo:
    • El valor máximo permitido por el sistema.

Conjeturas de errores:

  • Si pedidoId es null, puede lanzar una excepción como IllegalArgumentException o NullPointerException.
  • Si no se encuentra la dirección asociada, puede lanzar una NoResultException.

11. EntidadDAO

11.1Método: insert(E entity)

Clases de equivalencia:

  1. Válida:
    • La entidad es no nula y tiene datos válidos.
    • La operación persiste la entidad y devuelve 1.
  2. Inválida:
    • La entidad es null, lanza una IllegalArgumentException.
    • La entidad tiene datos no válidos o viola restricciones de la base de datos, devolviendo 0.

Valores límites:

  • Entidad con la cantidad mínima de atributos requeridos.
  • Entidad con el máximo número de atributos y relaciones complejas.

11.2Método: update(E entity)

Clases de equivalencia:

  1. Válida:
    • La entidad existe en la base de datos, contiene datos válidos y se actualiza correctamente devolviendo 1.
  2. Inválida:
    • La entidad es null, lanza una IllegalArgumentException.
    • La entidad no existe, devuelve 0.
    • La entidad contiene datos inválidos, devuelve 0.

Valores límites:

  • Entidad con solo los atributos obligatorios.
  • Entidad compleja con relaciones a múltiples entidades.

11.3. Método: delete(E entity)

Clases de equivalencia:

  1. Válida:
    • La entidad es válida y existe en la base de datos, se elimina y devuelve 1.
  2. Inválida:
    • La entidad es null, lanza una IllegalArgumentException.
    • La entidad no existe, devuelve 0.

Valores límites:

  • Entidad con el mínimo número de datos necesarios.
  • Entidad con relaciones asociadas a otras entidades.

11.4. Método: select(String id)

Clases de equivalencia:

  1. Válida:
    • El ID es válido y corresponde a un registro existente en la base de datos, devuelve un Optional con la entidad.
  2. Inválida:
    • El ID es null o no existe en la base de datos, devuelve Optional.empty().

Valores límites:

  • ID mínimo válido, como "1".
  • ID máximo permitido, como Long.MAX_VALUE.

11.5. Método: findById(Long id)

Clases de equivalencia:

  1. Válida:
    • El ID es válido y existe en la base de datos, devuelve un Optional con la entidad.
  2. Inválida:
    • El ID es null o no existe en la base de datos, devuelve Optional.empty().

Valores límites:

  • ID mínimo permitido: 1.
  • ID máximo permitido por el esquema de base de datos.

11.6. Método: findAll()

Clases de equivalencia:

  1. Válida:
    • La base de datos contiene registros, devuelve una lista con todas las entidades.
  2. Inválida:
    • La base de datos está vacía, devuelve una lista vacía.

Valores límites:

  • Base de datos vacía.
  • Base de datos con el máximo número de registros permitidos.

12. GestorBaseDatos

12.1. Método: conectar()

Clases de equivalencia:

  1. Válidas:
    • La base de datos está disponible y accesible.
    • Las credenciales son correctas y la URL es válida.
  2. Inválidas:
    • Base de datos inaccesible, credenciales incorrectas o URL inválida.
    • Problemas de red.

Valores máximos y mínimos:

  • Máximo: Conexión establecida correctamente.
  • Mínimo: URL incorrecta, credenciales erróneas o base de datos no disponible.

Conjeturas de errores:

  • SQLException: Por base de datos no disponible o credenciales/URL incorrectas.
  • NullPointerException: Si la conexión no se inicializa correctamente.

12.2. Método: ejecutarConsulta(String consulta)

Clases de equivalencia:

  1. Válidas:
    • Consulta SQL válida que devuelve resultados.
  2. Inválidas:
    • Consulta SQL con errores de sintaxis o tablas inexistentes.
    • Conexión no disponible.
    • Resultados nulos o vacíos.

Valores máximos y mínimos:

  • Máximo: Consulta válida con múltiples registros.
  • Mínimo: Consulta que devuelve resultados vacíos.

Conjeturas de errores:

  • SQLException: Si la consulta tiene errores de sintaxis.
  • NullPointerException: Si la conexión es null.

12.3. Método: insert(String sql)

Clases de equivalencia:

  1. Válidas:
    • Sentencia SQL de inserción válida con datos correctos.
  2. Inválidas:
    • Sentencia SQL inválida.
    • Conexión no disponible.
    • Violación de restricciones, como claves primarias duplicadas.

Valores máximos y mínimos:

  • Máximo: Inserción exitosa de múltiples registros.
  • Mínimo: Inserción fallida por errores en la sentencia SQL.

Conjeturas de errores:

  • SQLException: Por errores de sintaxis o restricciones.
  • NullPointerException: Si la conexión es null.

12.4. Método: update(String sql)

Clases de equivalencia:

  1. Válidas:
    • Sentencia SQL de actualización válida que modifica registros.
  2. Inválidas:
    • Sentencia SQL inválida.
    • Conexión no disponible.
    • Condiciones incorrectas que no afectan registros.

Valores máximos y mínimos:

  • Máximo: Actualización exitosa de múltiples registros.
  • Mínimo: Sin cambios por condiciones inválidas.

Conjeturas de errores:

  • SQLException: Por sentencias SQL incorrectas.
  • NullPointerException: Si la conexión es null.

12.5. Método: desconectar()

Clases de equivalencia:

  1. Válidas:
    • La conexión está abierta y se cierra correctamente.
  2. Inválidas:
    • La conexión ya está cerrada o no se estableció previamente.

Valores máximos y mínimos:

  • Máximo: Desconexión exitosa.
  • Mínimo: Intentar desconectar sin conexión activa.

Conjeturas de errores:

  • SQLException: Por errores al cerrar la conexión.
  • NullPointerException: Si la conexión es null.

13. ItemmenuDAO

13.1. Método: findById(Long id)

Clases de equivalencia:

  1. ID válido: El id corresponde a un ItemMenu existente.
  2. ID inexistente: El id no corresponde a ningún ItemMenu.
  3. ID nulo: El id es null.

Valores límites:

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

Conjeturas de errores:

  1. El método lanza una excepción al recibir un null como id.
  2. La consulta no encuentra el elemento y retorna un Optional.empty().

13.2. Método: eliminarItemMenuPorId(Long platoId)

Clases de equivalencia:

  1. ID válido y existente: El platoId corresponde a un ItemMenu en la base de datos.
  2. ID válido pero inexistente: El platoId no existe en la base de datos.
  3. ID nulo: El platoId es null.

Valores límites:

  • ID mínimo válido: 1L.
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. El método intenta eliminar un elemento inexistente y no realiza ninguna acción.
  2. El método lanza una excepción al recibir un null como platoId.

13.3. Método: obtenerItemsPorRestaurante(Long restauranteId)

Clases de equivalencia:

  1. Restaurante con ítems: El restauranteId corresponde a un restaurante con ítems asociados.
  2. Restaurante sin ítems: El restauranteId corresponde a un restaurante sin ítems asociados.
  3. Restaurante inexistente: El restauranteId no corresponde a ningún restaurante.
  4. ID nulo: El restauranteId es null.

Valores límites:

  • ID mínimo válido: 1L.
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. El método retorna una lista vacía para un restaurante sin ítems.
  2. El método lanza una excepción si el restauranteId es null.
  3. La consulta JPQL no encuentra ningún ítem debido a un error de configuración de la base de datos.

13.4. Métodos heredados de EntidadDAO (insert, update, delete)

Clases de equivalencia:

  1. Entidad válida: La entidad ItemMenu cumple con todos los requisitos de persistencia.
  2. Entidad nula: La entidad es null.
  3. Entidad inválida: La entidad tiene campos requeridos vacíos o incorrectos.

Valores límites:

  • 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_VALUE o similar).

Conjeturas de errores:

  1. El método lanza una excepción al recibir una entidad nula.
  2. La operación falla debido a restricciones de la base de datos (e.g., claves foráneas).
  3. La entidad ya existe en el caso de insert.

14. PedidoDAO

14.1. Método: save(Pedido pedido)

Clases de equivalencia:

  1. Pedido válido: El objeto Pedido tiene todos los atributos requeridos correctamente definidos.
  2. Pedido nulo: El objeto Pedido es null.
  3. Pedido con atributos inválidos: Atributos del Pedido no cumplen restricciones de la base de datos (e.g., claves foráneas, valores requeridos).

Valores límites:

  • Campos numéricos (IDs, totales, etc.): 0 (mínimo permitido), valores grandes cercanos a Long.MAX_VALUE.
  • Campos de texto: Longitud mínima ("" o null) y máxima (longitud definida por la base de datos).

Conjeturas de errores:

  1. Excepción al intentar persistir un Pedido nulo.
  2. Violación de restricciones en la base de datos por valores inválidos.
  3. Persistencia fallida debido a problemas en la configuración del EntityManager.

14.2. Método: findPedidosEnCurso(Long clienteId)

Clases de equivalencia:

  1. Cliente con pedidos en curso: El cliente tiene pedidos en estados distintos de ENTREGADO.
  2. Cliente sin pedidos en curso: El cliente no tiene pedidos en curso.
  3. Cliente inexistente: No existe ningún cliente con el clienteId proporcionado.
  4. ID de cliente nulo: El clienteId es null.

Valores límites:

  • ID mínimo válido: 1L (asumiendo que los IDs empiezan desde 1).
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. Excepción si clienteId es null.
  2. Retorno de una lista vacía si no hay pedidos en curso.
  3. Error de consulta por mal uso del parámetro estadoEntregado.

14.3. Método: buscarporid(Long id)

Clases de equivalencia:

  1. ID válido: El id corresponde a un pedido existente.
  2. ID inexistente: El id no corresponde a ningún pedido.
  3. ID nulo: El id es null.

Valores límites:

  • ID mínimo válido: 1L.
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. El método retorna un Optional.empty() si el id no existe.
  2. El método lanza una excepción si id es null.

14.4. Método: findPedidosEntregados(Long clienteId)

Clases de equivalencia:

  1. Cliente con pedidos entregados: El cliente tiene pedidos con estado ENTREGADO.
  2. Cliente sin pedidos entregados: El cliente no tiene pedidos con estado ENTREGADO.
  3. Cliente inexistente: No existe ningún cliente con el clienteId proporcionado.
  4. ID de cliente nulo: El clienteId es null.

Valores límites:

  • ID mínimo válido: 1L.
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. El método retorna una lista vacía si no hay pedidos entregados.
  2. Excepción si el clienteId es null.

14.5. Método: findPedidosPagados()

Clases de equivalencia:

  1. Existen pedidos pagados: La base de datos tiene pedidos con estado PAGADO.
  2. No existen pedidos pagados: No hay pedidos con estado PAGADO.

Valores límites:

  • Este método no depende de parámetros, por lo que no hay valores límite.

Conjeturas de errores:

  1. Retorno de una lista vacía si no hay pedidos pagados.
  2. Error en la consulta si el valor EstadoPedido.PAGADO no está correctamente definido o configurado.

15. RepartidorDAO

15.1. Método: findAllIds()

Clases de equivalencia:

  1. Existen IDs de repartidores: La tabla repartidor tiene registros, y el método devuelve una lista de IDs.
  2. No existen IDs de repartidores: La tabla repartidor está vacía, y el método devuelve una lista vacía.

Valores límites:

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

Conjeturas de errores:

  1. El método lanza una excepción si hay un error en la consulta SQL nativa.
  2. El método retorna null en lugar de una lista vacía.
  3. La consulta SQL contiene errores de sintaxis o referencia a una tabla incorrecta.

15.2. Método: findByUsername(String username)

Clases de equivalencia:

  1. Usuario válido y existente: El username corresponde a un usuario existente, y el método devuelve un Optional<Repartidor> con el repartidor correspondiente.
  2. Usuario válido pero inexistente: El username no corresponde a ningún usuario, y el método devuelve un Optional.empty().
  3. Username nulo: El método lanza una excepción (IllegalArgumentException) porque no se permite un parámetro nulo.

Valores límites:

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

Conjeturas de errores:

  1. El método lanza una excepción si el parámetro username es null.
  2. La consulta JPQL falla debido a un error de sintaxis o configuración.
  3. El método retorna una lista en lugar de un Optional al usar getResultList.

16. RestauranteDAO

16.1. Método: findByUsuario(Usuario usuario)

Clases de equivalencia:

  1. Usuario válido y existente: El Usuario corresponde a un Restaurante asociado.
  2. Usuario válido pero inexistente: El Usuario no tiene un Restaurante asociado.
  3. Usuario nulo: El parámetro usuario es null.

Valores límites:

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

Conjeturas de errores:

  1. Excepción si usuario es null.
  2. Retorno de Optional.empty() si no se encuentra ningún Restaurante.
  3. Error en la consulta JPQL debido a mal uso del parámetro.

16.2. Método: findByCodigoPostal(String codigoPostal)

Clases de equivalencia:

  1. Código postal válido con restaurantes asociados: Hay restaurantes con direcciones que contienen el código postal.
  2. Código postal válido sin restaurantes asociados: No hay restaurantes que coincidan con el código postal.
  3. Código postal nulo o vacío: El parámetro es null o una cadena vacía.

Valores límites:

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

Conjeturas de errores:

  1. Excepción si el código postal es null.
  2. Error de consulta si el formato de la dirección en la base de datos no es consistente.

16.3. Método: findCartasMenuByRestauranteId(Long restauranteId)

Clases de equivalencia:

  1. ID de restaurante válido con cartas asociadas: Hay cartas de menú asociadas al restaurante.
  2. ID de restaurante válido sin cartas asociadas: No hay cartas de menú asociadas.
  3. ID de restaurante inexistente: No existe un restaurante con el restauranteId proporcionado.
  4. ID de restaurante nulo: El parámetro restauranteId es null.

Valores límites:

  • ID mínimo válido: 1L.
  • ID máximo permitido: Long.MAX_VALUE.

Conjeturas de errores:

  1. Excepción si restauranteId es null.
  2. Retorno de una lista vacía si no hay cartas asociadas.
  3. Error en la consulta JPQL por mal uso del parámetro restauranteId.

16.4. Método: obtenerRestaurantesAleatorios(int cantidad)

Clases de equivalencia:

  1. Cantidad válida con suficientes restaurantes: Hay más o igual restaurantes disponibles que la cantidad solicitada.
  2. Cantidad válida con insuficientes restaurantes: Hay menos restaurantes disponibles que la cantidad solicitada.
  3. Cantidad negativa o 0: La cantidad solicitada no es válida.

Valores límites:

  • Cantidad mínima válida: 1.
  • Cantidad máxima: Gran número (e.g., 1000).

Conjeturas de errores:

  1. Excepción si la cantidad solicitada es 0 o negativa.
  2. Retorno de una lista vacía si no hay restaurantes disponibles.
  3. Error en la consulta JPQL debido a problemas con la función RAND().

Clone this wiki locally