Skip to content

Testing

Fernando Martín Martín edited this page Dec 11, 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().

17. ServicioEntregaDAO

17.1. Método: findByPedidoId(Long pedidoId)

Clases de Equivalencia:

  1. ID válido y existente: El pedidoId corresponde a un pedido con un servicio de entrega asociado.
  2. ID válido pero inexistente: El pedidoId no tiene un servicio de entrega asociado.
  3. ID nulo: El pedidoId es null.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si pedidoId es null.
  2. Retorno de un Optional.empty() si no se encuentra un servicio de entrega asociado.
  3. Error de consulta debido a un mal uso del parámetro en JPQL.

17.2. Método: findByEstado(EstadoPedido estado)

Clases de Equivalencia:

  1. Estado válido con servicios asociados: El estado corresponde a servicios de entrega en la base de datos.
  2. Estado válido sin servicios asociados: No hay servicios con ese estado.
  3. Estado nulo: El parámetro estado es null.

Valores Límite:

  • Todos los valores del enum EstadoPedido: Se deben cubrir todos los posibles valores definidos en el enum, como PAGADO, RECOGIDO, ENTREGADO, etc.

Conjeturas de Errores:

  1. El método retorna una lista vacía si no hay servicios con el estado dado.
  2. Excepción si el parámetro estado es null.
  3. Error en JPQL si el estado no está correctamente definido en la consulta.

17.3. Método: findByRepartidorId(Long repartidorId)

Clases de Equivalencia:

  1. ID válido con servicios asociados: El repartidorId tiene servicios de entrega asignados.
  2. ID válido sin servicios asociados: No hay servicios asignados a ese repartidorId.
  3. ID inexistente: El repartidorId no corresponde a ningún repartidor.
  4. ID nulo: El repartidorId es null.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si repartidorId es null.
  2. El método retorna una lista vacía si no hay servicios asignados.
  3. Error en JPQL si el parámetro no está correctamente definido.

18. UsuarioDAO

18.1. Método: encontrarUser(String username)

Clases de Equivalencia:

  1. Username válido y existente: El username corresponde a un usuario registrado en la base de datos.
  2. Username válido pero inexistente: El username no corresponde a ningún usuario.
  3. Username nulo o vacío: El parámetro username es null o una cadena vacía.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si username es null o vacío.
  2. Retorno de Optional.empty() si no se encuentra un usuario.
  3. Error en JPQL debido a mal uso del parámetro username.

18.2. Método: getRole(String username)

Clases de Equivalencia:

  1. Username válido y existente: El username corresponde a un usuario con un rol definido.
  2. Username válido pero inexistente: El username no corresponde a ningún usuario.
  3. Username nulo o vacío: El parámetro username es null o una cadena vacía.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si username es null o vacío.
  2. Error si el usuario no tiene un rol asignado en la base de datos.
  3. Error en JPQL debido a un mal uso del parámetro username.

19. IUBúsqueda

19.1. Método: buscarRestaurantesPorCodigoPostal(String codigoPostal)

Clases de Equivalencia:

  1. Código postal válido y existente: El código postal corresponde a una región con restaurantes disponibles.
  2. Código postal válido pero sin restaurantes: El código postal es válido pero no hay restaurantes asociados a esa área.
  3. Código postal inválido: El código postal tiene un formato incorrecto (e.g., "abcd1234").
  4. Código postal nulo o vacío: El parámetro codigoPostal es null o una cadena vacía.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el código postal es null o vacío.
  2. Excepción si el formato del código postal es incorrecto.
  3. Devuelve una lista vacía si no hay restaurantes asociados al código postal.

19.2. Método: marcarFavorito(Long idRestaurante)

Clases de Equivalencia:

  1. ID de restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
  2. ID de restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
  3. ID de restaurante nulo: El parámetro idRestaurante es null o no se ha proporcionado un valor.
  4. Cliente válido: El cliente está autenticado y existe en la base de datos.
  5. 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).

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el restaurante no existe.
  2. Excepción si el cliente no está autenticado o no se encuentra.
  3. El cliente ya tiene este restaurante en sus favoritos (es posible que se maneje como una excepción o una no acción).
  4. Error si el idRestaurante es null.

19.3. Método: desmarcarFavorito(Long idRestaurante)

Clases de Equivalencia:

  1. ID de restaurante válido y existente en los favoritos: El restaurante está en la lista de favoritos del cliente.
  2. ID de restaurante válido pero no está en los favoritos: El restaurante no está en la lista de favoritos del cliente.
  3. ID de restaurante nulo o vacío: El parámetro idRestaurante es null o no se ha proporcionado.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el restaurante no está en los favoritos del cliente.
  2. Excepción si el idRestaurante es null o no válido.
  3. Excepción si el cliente no está autenticado o no se encuentra en la base de datos.

19.4. Método: listarFavoritos()

Clases de Equivalencia:

  1. Cliente con favoritos: El cliente tiene uno o más restaurantes en su lista de favoritos.
  2. Cliente sin favoritos: El cliente no tiene restaurantes en su lista de favoritos.
  3. Cliente no autenticado: El cliente no está autenticado o no existe en la base de datos.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el cliente no está autenticado o no se encuentra en la base de datos.
  2. Devuelve una lista vacía si no se tienen favoritos.

19.5. Método: obtenerRestaurante(Long restauranteId)

Clases de Equivalencia:

  1. ID de restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
  2. ID de restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
  3. ID de restaurante nulo o vacío: El parámetro restauranteId es null o no se ha proporcionado.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el restaurante no existe.
  2. Excepción si el restauranteId es nulo o vacío.
  3. Excepción si el restaurante no tiene menús disponibles.

19.6. Método: obtenerRestaurantesDestacados()

Clases de Equivalencia:

  1. Restaurantes destacados disponibles: Hay al menos 4 restaurantes destacados en la base de datos.
  2. Restaurantes destacados no disponibles: No hay suficientes restaurantes destacados disponibles.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si no hay restaurantes destacados suficientes.
  2. Excepción si se produce un error al intentar obtener restaurantes aleatorios.

19.7. Método: obtenerClienteActual()

Clases de Equivalencia:

  1. Cliente autenticado: El cliente está autenticado correctamente en el sistema.
  2. Cliente no autenticado: El cliente no está autenticado (por ejemplo, no hay usuario en el contexto de seguridad).

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el cliente no está autenticado.
  2. Excepción si el cliente no existe en la base de datos.
  3. Excepción si el username obtenido no está presente en la base de datos.

20. IUEdicionMenu

20.1. Método: editarRestaurante(Restaurante restaurante)

Clases de Equivalencia:

  1. Restaurante válido y existente: El restaurante con el ID proporcionado existe en la base de datos.
  2. Restaurante válido pero inexistente: El restaurante con el ID proporcionado no existe en la base de datos.
  3. Restaurante con campos válidos: Los campos del restaurante (nombre, dirección) son válidos.
  4. Restaurante con campos inválidos: Los campos del restaurante contienen valores inválidos o vacíos.
  5. Restaurante nulo: El parámetro restaurante es null.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el restaurante no existe en la base de datos.
  2. Excepción si el objeto restaurante es null.
  3. Error si se proporcionan valores inválidos o vacíos para los campos nombre o dirección.
  4. Error si hay un problema al realizar la actualización en la base de datos.

20.2. Método: editarCartaMenu(CartaMenu cartaMenu)

Clases de Equivalencia:

  1. Carta de menú válida y existente: La carta de menú con el ID proporcionado existe en la base de datos.
  2. Carta de menú válida pero inexistente: La carta de menú con el ID proporcionado no existe en la base de datos.
  3. Carta de menú con campos válidos: Los campos de la carta de menú (nombre, descripción, items) son válidos.
  4. Carta de menú con campos inválidos: Los campos de la carta de menú contienen valores inválidos o vacíos.
  5. Carta de menú nula: El parámetro cartaMenu es null.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si la carta de menú no existe en la base de datos.
  2. Excepción si el objeto cartaMenu es null.
  3. Error si los campos nombre, descripción o items son inválidos.
  4. Error si hay un problema al realizar la actualización en la base de datos.

20.3. Método: editarItemMenu(ItemMenu itemMenu)

Clases de Equivalencia:

  1. Item de menú válido y existente: El item de menú con el ID proporcionado existe en la base de datos.
  2. Item de menú válido pero inexistente: El item de menú con el ID proporcionado no existe en la base de datos.
  3. Item de menú con campos válidos: Los campos del item de menú (nombre, descripción, precio) son válidos.
  4. Item de menú con campos inválidos: Los campos del item de menú contienen valores inválidos o vacíos.
  5. Item de menú nulo: El parámetro itemMenu es null.

Valores Límite:

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

Conjeturas de Errores:

  1. Excepción si el item de menú no existe en la base de datos.
  2. Excepción si el objeto itemMenu es null.
  3. Error si los campos nombre, descripción, o precio son inválidos o están vacíos.
  4. Error si el precio es un valor negativo o no válido.
  5. Error si hay un problema al realizar la actualización en la base de datos.

21. IULogin

21.1. Método: login

Clases de Equivalencia:

  1. Entrada Válida:
    • Usuario y contraseña correctos (autenticación exitosa).
    • El usuario tiene un rol válido: CLIENTE, REPARTIDOR, RESTAURANTE.
  2. 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_.

Valores Límite:

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

Conjeturas de Error:

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

Casos de prueba:

  • Positivos:
    1. Usuario con rol CLIENTE y credenciales correctas.
    2. Usuario con rol REPARTIDOR y credenciales correctas.
    3. Usuario con rol RESTAURANTE y credenciales correctas.
  • Negativos:
    1. Usuario con nombre de usuario incorrecto.
    2. Contraseña incorrecta.
    3. Rol desconocido.
    4. Usuario con rol sin el prefijo ROLE_.
    5. Longitud de usuario o contraseña fuera del rango permitido.

21.2. Método: registroCliente

Clases de Equivalencia:

  1. Entrada Válida:
    • Usuario y contraseña válidos, datos del cliente completos.
  2. Entrada Inválida:
    • El nombre de usuario ya existe en la base de datos.

Valores Límite:

  • Nombre de usuario: Longitud mínima y máxima permitida.
  • DNI del cliente: Validez del formato del DNI.

Conjeturas de Error:

  1. Si el nombre de usuario ya existe, el sistema debería dar un mensaje de error indicando que no se puede registrar el cliente.

Casos de prueba:

  • Positivos:
    1. Registro de cliente con un nombre de usuario válido, contraseña válida, y datos del cliente completos.
  • Negativos:
    1. Intento de registro con un nombre de usuario que ya existe en la base de datos.
    2. Datos faltantes del cliente (nombre, apellido, DNI).

21.3. Método: registroRepartidor

Clases de Equivalencia:

  1. Entrada Válida:
    • Usuario y contraseña válidos, datos del repartidor completos.
  2. Entrada Inválida:
    • El nombre de usuario ya existe.

Valores Límite:

  • DNI del repartidor: Validez del formato del DNI.

Conjeturas de Error:

  1. El nombre de usuario ya existe, lo que causaría que no se registre el repartidor.

Casos de prueba:

  • Positivos:
    1. Registro de repartidor con un nombre de usuario válido, contraseña válida, y datos del repartidor completos.
  • Negativos:
    1. Intento de registro con un nombre de usuario que ya existe en la base de datos.
    2. Datos faltantes del repartidor (nombre, apellido, DNI).

21.4. Método: registroRestaurante

Clases de Equivalencia:

  1. Entrada Válida:
    • Usuario y contraseña válidos, datos del restaurante completos.
  2. Entrada Inválida:
    • El nombre de usuario ya existe.

Valores Límite:

  • Nombre del restaurante: Longitud máxima permitida para el nombre.
  • Dirección del restaurante: Validación de la dirección (mínimo 10 caracteres).

Conjeturas de Error:

  1. El nombre de usuario ya existe, lo que causaría que no se registre el restaurante.

Casos de prueba:

  • Positivos:
    1. Registro de restaurante con un nombre de usuario válido, contraseña válida, y datos del restaurante completos.
  • Negativos:
    1. Intento de registro con un nombre de usuario que ya existe en la base de datos.
    2. Datos faltantes del restaurante (nombre, dirección).

21.5. Método: home

Clases de Equivalencia:

  1. Entrada Válida:
    • Se muestran correctamente los restaurantes destacados en la página de inicio.

Casos de prueba:

  • Positivos:
    1. Verificación de que la página muestra correctamente los restaurantes destacados.
  • Negativos:
    1. No se muestran restaurantes si hay un error en la base de datos o en la lógica del backend.

22. Pedido

22.1. Método: obtenerPedidosEnCurso

Clases de equivalencia:

  1. Cliente con pedidos en curso.
  2. Cliente sin pedidos en curso.
  3. Cliente con ID inexistente en la base de datos.

Valores límite:

  1. Cliente ID = null (debería lanzar una excepción).
  2. Cliente con ID válido, pero con una lista vacía de pedidos.
  3. Cliente con una lista muy grande de pedidos.

22.2. Método: obtenerPedidoPorId

Clases de equivalencia:

  1. Pedido existe en la base de datos.
  2. Pedido no existe en la base de datos.

Valores límite:

  1. ID del pedido = null (debería lanzar una excepción).
  2. Pedido con un ID muy grande o muy pequeño.

22.3. Método: obtenerServicioEntregaPorPedido

Clases de equivalencia:

  1. Pedido tiene un servicio de entrega asociado.
  2. Pedido no tiene un servicio de entrega asociado.
  3. Pedido con ID inexistente.

Valores límite:

  1. ID del pedido = null (debería lanzar una excepción).

22.4. Método: marcarPedidoComoEntregado

Clases de equivalencia:

  1. Pedido existe y puede ser marcado como entregado.
  2. Pedido no existe (debería lanzar una excepción).
  3. Pedido ya entregado (debería mantenerse sin cambios).

Valores límite:

  1. ID del pedido = null (debería lanzar una excepción).

22.5. Método: obtenerPedidosEntregados

Clases de equivalencia:

  1. Cliente tiene pedidos entregados.
  2. Cliente no tiene pedidos entregados.
  3. Cliente con ID inexistente.

Valores límite:

  1. Cliente ID = null (debería lanzar una excepción).
  2. Cliente con una lista vacía de pedidos.
  3. Cliente con una lista muy grande de pedidos.

Clone this wiki locally