Метод assertSoftDeleted
Метод assertSoftDeleted предназначен для проверки того, что указанная запись была мягко удалена. Он проверяет наличие записи в базе данных с установленным значением в поле deleted_at. Первым параметром передаётся имя модели, вторым - массив условий для поиска записи. Если запись не найдена или не является мягко удалённой, тест завершится с ошибкой.
Синтаксис
<?php
$this->assertSoftDeleted($model, $conditions);
?>
Пример
Давайте проверим, что статья с id равным 1 была мягко удалена:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ArticleTest extends TestCase
{
use RefreshDatabase;
public function test_article_is_soft_deleted()
{
$article = Article::factory()->create();
$article->delete();
$this->assertSoftDeleted(Article::class, [
'id' => $article->id
]);
}
}
?>
Результат выполнения кода:
"Test passed successfully"
Пример
Проверим мягкое удаление пользователя с определённым email:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
class UserTest extends TestCase
{
use RefreshDatabase;
public function test_user_soft_delete_by_email()
{
$user = User::factory()->create([
'email' => 'user@example.com'
]);
$user->delete();
$this->assertSoftDeleted(User::class, [
'email' => 'user@example.com'
]);
}
}
?>
Результат выполнения кода:
"Test passed successfully"
Пример
Проверим мягкое удаление записи с несколькими условиями:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Post;
use Illuminate\Foundation\Testing\RefreshDatabase;
class PostTest extends TestCase
{
use RefreshDatabase;
public function test_post_soft_deleted_by_multiple_conditions()
{
$post = Post::factory()->create([
'user_id' => 5,
'status' => 'draft'
]);
$post->delete();
$this->assertSoftDeleted(Post::class, [
'user_id' => 5,
'status' => 'draft'
]);
}
}
?>
Результат выполнения кода:
"Test passed successfully"
Смотрите также
-
метод
assertDatabaseHas,
который проверяет наличие записи в базе данных -
метод
assertDatabaseMissing,
который проверяет отсутствие записи в базе данных -
метод
assertModelExists,
который проверяет существование модели в базе данных -
метод
assertModelMissing,
который проверяет отсутствие модели в базе данных