castopod/tests/database/ExampleDatabaseTest.php

60 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Database;
use CodeIgniter\Database\Seeder;
use CodeIgniter\Test\CIUnitTestCase;
use CodeIgniter\Test\DatabaseTestTrait;
use Tests\Support\Database\Seeds\ExampleSeeder;
use Tests\Support\Models\ExampleModel;
class ExampleDatabaseTest extends CIUnitTestCase
{
use DatabaseTestTrait;
/**
* @var class-string<Seeder>|list<class-string<Seeder>>
*/
protected $seed = ExampleSeeder::class;
public function testModelFindAll(): void
{
$model = new ExampleModel();
// Get every row created by ExampleSeeder
$objects = $model->findAll();
// Make sure the count is as expected
$this->assertCount(3, $objects);
}
public function testSoftDeleteLeavesRow(): void
{
$model = new ExampleModel();
$this->setPrivateProperty($model, 'useSoftDeletes', true);
$this->setPrivateProperty($model, 'tempUseSoftDeletes', true);
$object = $model->first();
if (! is_object($object)) {
return;
}
$model->delete($object->id);
// The model should no longer find it
$this->assertNull($model->find($object->id));
// ... but it should still be in the database
$result = $model
->builder()
->where('id', $object->id)
->get()
->getResult();
$this->assertCount(1, $result);
}
}