A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Delete con TDD

33/36
Recursos

Aportes 13

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

  • El test contiene:
    -> Creas el metodo de test
    -> Creas del post
    -> Eliminamos eliminas el post
    -> Verificas que no exista en la DB

  • Crea el test del delete post

  • Corre el test y saldra en rojo

  • Configura el metodo para eliminar desde el controller

  • Corre el test y saldra en verde

Agregue el m茅todo de eliminar con un post que no existe:

public function test_404_delete()
{
    //creo el post
    $post = factory(Post::class)->create(); 
    //trato de eliminar un post que no existe
    $response = $this->json('DELETE', "/api/posts/1000");

    //espero estatus 404
    $response->assertStatus(404);

    //verifico que en realidad el post no existe en la base 
    $this->assertDatabaseMissing('posts', ['id'=> 1000]);
}

En resumen, lo que se hizo fue crear un nuevo post usando Fatories, recuerden que los factories insertan datos ficticios en la base de datos, enntonces, usando ese post falso creado es como probamos que la ruta DELETE funciona

public function test_delete()
    {
        // Con esto vemos el mensaje del error
        $this->withoutExceptionHandling();

        // Primero se crea el post
        $post = Post::factory()->create();

        // Sec rea la funci贸n de eliminar
        $response = $this->json('DELETE', "api/posts/$post->id");
        
        // Se crean las validaciones
        $response->assertSee(null)
                ->assertStatus(204); //sin contenido
        
        // Con el  assertDatabaseMissing decimos que esto no existe en la base de datos.
        $this->assertDatabaseMissing('posts', ['id' => $post->id]);
    }

Como seria la prueba si la tabla post emplea SoftDelete ?

    public function test_delete()
    {
        //$this->withoutExceptionHandling(); //PARA TESTING DETALLADO
        $post = factory(Post::class)->create();

        $response = $this->json('DELETE',"/api/posts/$post->id");

        $response->assertSee(null)
            ->assertStatus(204); //SIN CONTENIDO : CODIGO 204
        

        $this->assertDatabaseMissing('posts',['id' => $post->id]);
    }

Excelente clase del delete con TDD

Genial esta estructura que nos permite tener todo bien claro

M茅todo Delete Ok. Ahora seguimos las pruebas con el m茅todo Index.

Porque en el metodo destroy utilizo como param
Post y no PostRequest?

genial estos temas, de gran utilidad

    public function test_deleted()
    {
        $post = Factory(Post::class)->create();

        $response = $this->json('DELETE',"/api/posts/$post->id"); 

        $response->assertSee(null)
                 ->assertStatus(204);//OK 

        $this->assertDatabaseMissing('posts',['id' => $post->id]);
    }

Aporte de la clase 馃槃


     /* 
        1.Crear un post con factory.
        2.Configuro la solicitud para eliminar el post con el ID 
          pasado por la ruta de eliminaci贸n.
        3.Verificar que la respuesta este null y el status sea 204
        4.verificar que el id no se encuentra en la base de datos.

        Nota:$response->assertSee(null) ->Afirma que el string dado esta contenido en la respuesta.
    */
    public function test_delete(){

        // Llamada al manejador de errores para mostrar de manera m谩s concisa la falla.
        // $this->withoutExceptionHandling();
        
        $post = factory(Post::class)->create();

        $response = $this->json('DELETE',"api/posts/$post->id");

        $response->assertSee(null)
                 ->assertStatus(204); //Sin contenido..

        $this->assertDatabaseMissing('posts',['id' => $post->id]);
    }