En esta lección 37 de nuestro Curso de Laravel 5.5 desde cero, seguiremos con la creación del modulo de usuarios, esta vez vamos a trabajar en la acción para eliminar usuarios de la base de datos utilizando desarrollo guiado por pruebas automatizadas (TDD).


Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Si tratamos de acceder a una URL que existe pero utilizando un método diferente recibiremos una excepción de tipo MethodNotAllowed.

En el archivo de rutas utilizamos el método delete:

Route::delete('/usuarios/{user}', 'UserController@destroy');

Dentro de la prueba también utilizamos el método delete llamando a $this->delete:

$this->delete("users/{$user->id}");

Con assertDatabaseMissing comprobamos que el registro ya no existe en la base de datos. Como primer argumento pasamos el nombre de la tabla y como segundo el array de atributos que no esperamos encontrar. En este caso no esperamos encontrar el registro con el id pasado:

$this->assertDatabaseMissing('users', [
    'id' => $user->id
]);

También podemos utilizar assertSame, pasamos como primer argumento el valor esperado y como segundo argumento la cantidad de usuarios actual:

$this->assertSame(0, User::count());

Esperaríamos cero usuarios puesto que eliminamos el único usuario creado.

Si estamos cargando el modelo con Route Model Binding podemos llamar al método delete para eliminar el registro directamente:

function destroy(User $user) {
    $user->delete();

    return redirect()->route('users.index');
}

De lo contrario tendríamos que escribir algo como:

$user = User::findOrFail($id);

$user->delete();

Recuerda que en lugar de escribir la URL puedes usar el nombre de la ruta para redirigir:

return redirect()->route('users.index');
Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Validar que el e-mail sea único cuando se edita un usuario con Laravel Lección siguiente Agregando enlaces al módulo de usuarios