📝
Laravelで論理削除をテストする
はじめに
Laravelで論理削除を検証する機会がありました。
そのメモを残します。
方法
assertSoftDeleted
メソッドを使います。
public function test_論理削除されること()
{
$post = Post::find(1);
$response = $this->json("DELETE", "/post/1");
$response->assertStatus(Response::HTTP_OK);
$this->assertSoftDeleted($post);
}
論理削除されていない場合は、assertDatabaseHas
で検証しました。
public function test_他人の投稿は削除できない()
{
$response = $this->json("DELETE", "/post/2");
$response->assertStatus(Response::HTTP_FORBIDDEN);
$this->assertDatabaseHas("posts", [
'id' => 2,
'deleted_at' => null, // 論理削除されていないことを確認
]);
}
参考
Discussion