Тестовый набор Laravels имеет утверждение под названием
$this->assertSoftDeleted()
Но есть ли обратное? Утверждать, что что-то не мягко удалено?
я пробовал assertDatabaseHas
но не работает.
Я сделал это так $this->assertTrue(! $goal->fresh()->trashed());
Работает отлично.
Но есть ли другой, лучший, более — элегантный — и способ Laravel?
Что-то не удаляемое мягко означает, что 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,
]);
}
Других решений пока нет …