Introducci贸n

1

Desarrollo de Aplicaciones en Laravel con TDD y PHP Unit

2

Desarrollo de Proyectos con TDD en Laravel y Testing PHP

Proyecto

3

Instalaci贸n y configuraci贸n inicial de proyectos en Laravel

4

Configuraci贸n de Relaciones y Pruebas Unitarias en Laravel

5

Configuraci贸n de Relaciones en Laravel usando Testing

6

Protecci贸n de Rutas en Laravel con Middleware de Autenticaci贸n

7

Pruebas Automatizadas para Registro y Redirecci贸n en Base de Datos

8

Configuraci贸n de Actualizaci贸n de Registros con Pruebas en PHP

9

Validaci贸n de Datos en Controladores: Configuraci贸n y Pruebas

10

Eliminaci贸n de Registros en Base de Datos con PHP y Tests

P贸liticas de Acceso

11

Configuraci贸n de Pol铆ticas de Acceso en Repositorios

12

Pol铆ticas de Acceso y Eliminaci贸n de Repositorios en PHP

13

Configuraci贸n de Acceso a Repositorios Propios en Aplicaciones Web

14

Configuraci贸n del M茅todo Show en Controladores PHP

Vistas del proyecto

15

Formulario de Edici贸n con Dise帽o y Tests en Laravel

16

Testing de Formularios en PHP: Creaci贸n y Validaci贸n de Vistas

17

Configuraci贸n de Controladores y Vistas en Laravel para el 脕rea P煤blica

18

Dise帽o Web con Tailwind CSS: Mejora de Apariencia y Formato

19

Pruebas y Configuraci贸n de Seeders en Proyectos Laravel

Refactorizaci贸n

20

Refactorizaci贸n de C贸digo con Validaci贸n en PHP

21

Refactorizaci贸n de Pol铆ticas de Acceso en Laravel

22

Configuraci贸n de Botones para Repositorios en Proyectos Web

Conclusi贸n

23

Importancia de las Pruebas en Desarrollo de Software

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Eliminaci贸n de Registros en Base de Datos con PHP y Tests

10/23
Recursos

驴C贸mo eliminar un registro de una base de datos de forma segura?

Eliminar registros de bases de datos es una operaci贸n cr铆tica que debe realizarse con cuidado para asegurar la integridad de los datos y la funcionalidad del sistema. El proceso debe estar respaldado por pr谩cticas de prueba que aseguren la calidad y robustez del c贸digo. Aqu铆 explicaremos c贸mo crear y probar una funci贸n en PHP para eliminar un registro de la tabla de repositorios.

驴Qu茅 es importante al configurar una funci贸n para eliminar?

Configurar una funci贸n para eliminar un registro implica diversos pasos, cada uno avalado por pruebas exhaustivas:

  1. Identificaci贸n del registro: Se necesita determinar y validar el registro que se desea eliminar.
  2. Configuraci贸n de la ruta: Debe configurarse una ruta espec铆fica que permita acceder a la funcionalidad de eliminaci贸n.
  3. Implementaci贸n de redirecci贸n: Tras eliminar un registro, es 煤til redirigir al usuario a una vista actualizada del conjunto de datos restantes.
  4. Verificaci贸n de la eliminaci贸n: Asegurarse de que el registro ya no existe en la base de datos tras el proceso.

驴C贸mo reutilizar m茅todos existentes?

Reutilizar m茅todos de actualizaci贸n para prop贸sitos de eliminaci贸n puede ahorrar tiempo y esfuerzo, pero requiere modificar ciertos aspectos:

  • Adaptaci贸n del flujo: Aseg煤rate de que el flujo l贸gico se ajusta al proceso de eliminaci贸n en lugar del de actualizaci贸n.
  • Validaci贸n de ruta y m茅todo: Confirma que tanto la ruta como el m茅todo HTTP est谩n configurados correctamente (normalmente usar DELETE).

Uso de pruebas automatizadas para la eliminaci贸n

Las pruebas juegan un papel crucial en validar las operaciones que alteran una base de datos. Estos son los pasos clave:

  1. Creaci贸n del test:
    • Usa un framework como PHPUnit para configurar y ejecutar las pruebas.
    • Aseg煤rate de que las pruebas verifiquen que los registros se eliminan como se espera.
public function testRegistroSeEliminaCorrectamente()
{
    // Crear el registro
    $repositorio = Repositorio::factory()->create();
    
    // Actuar: Eliminar el registro
    $this->delete(route('repositorios.destroy', $repositorio));
    
    // Afirmar: Verificar que el registro ya no est谩 en la base de datos
    $this->assertDatabaseMissing('repositorios', ['id' => $repositorio->id]);
}
  1. Ejecuci贸n de pruebas:
    • Usa la l铆nea de comandos para ejecutar tus pruebas: php artisan test.
    • Revisa que todas las pruebas pasen exitosamente, confirmando que la eliminaci贸n funciona sin errores.

驴Qu茅 pasa despu茅s de la eliminaci贸n?

Una vez que confirmamos que la operaci贸n de eliminaci贸n funciona correctamente y las pruebas lo validan, podemos:

  • Documentar el c贸digo: A帽adir comentarios detallados que expliquen el prop贸sito y las particularidades de la implementaci贸n.
  • Monitorear el sistema: Asegurarnos de que las eliminaciones en producci贸n no afecten el rendimiento o la integridad de la base de datos.
  • Revalidar regularmente: Ajustar las pruebas seg煤n las evoluciones del sistema o cambios en las reglas de negocio.

Trabajar con bases de datos es un ejercicio continuo donde la exactitud y el respaldo son claves para el 茅xito. Contin煤a explorando maneras de integrar m谩s pruebas automatizadas y mant茅n siempre un enfoque cr铆tico sobre c贸mo optimizar cada operaci贸n de manipulaci贸n de datos.

Aportes 5

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Una shorten para este caso en assertDatabaseMissing puede ser

$this->assertDatabaseMissing('repositories', $repository->toArray());

Para ir al index de repositorios no es necesario agregarle el nombre de la ruta. Si se pasa por parametro la ruta como tal, tambien funciona.

return redirect("repositories");

Adjunto el commit de esta clase y de la anterior (tengo unas ligeras modificaciones como el uso de los form request):
https://github.com/jlbousing/practica-tdd/commit/250548d714f12ca63a89cca3a7b08d1679cbee19

Me gusta la forma en que hemos venido aprendiendo TDD, ya realizamos pruebas y estas pasaron.

php artisan test

Modificaciones:

  • tests/Feature/Http/Controllers/RepositoryControllerTest.php
    • test_destroy
  • app/Http/Controllers/RepositoryController.php

Test:

  • Crear usuario con factory, eliminar con HTTP-delete, validar redireccion a index y validar que ya no exista el valor en la DB con detalles