Laravel — утверждать не софт удалили? Обратные? — Тесты Laravel

Тестовый набор Laravels имеет утверждение под названием

$this->assertSoftDeleted()

Но есть ли обратное? Утверждать, что что-то не мягко удалено?

я пробовал assertDatabaseHas но не работает.

Я сделал это так $this->assertTrue(! $goal->fresh()->trashed());

Работает отлично.

Но есть ли другой, лучший, более — элегантный — и способ Laravel?

1

Решение

Что-то не удаляемое мягко означает, что deleted_at столбец является нулевым. Вы могли бы использовать assertDatabaseHas метод, в котором этот столбец пуст:

$this->assertDatabaseHas('goals', [
'id' => $goal->id,
'deleted_at' => null
]);

Если вы хотите сделать это немного более динамичным, вы можете расширить свою базу TestCase Класс с пользовательским методом, который сделает это за вас и позволит вам сохранить ваши тесты с читаемым именем утверждения, а также делать такие вещи, как вы, автоматически находя соответствующие имена таблиц / столбцов:

public function assertModelNotSoftDeleted(Model $model)
{
return $this->assertDatabaseHas($model->getTable(), [
$model->getKeyName() => $model->getKey(),
$model::DELETED_AT => null,
]);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector