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
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');
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