94 lines
2.0 KiB
PHP
94 lines
2.0 KiB
PHP
|
<?php namespace SokoWeb\Tests\Util;
|
||
|
|
||
|
use SokoWeb\PersistentData\Model\Model;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class OtherModel
|
||
|
{
|
||
|
}
|
||
|
|
||
|
class DummyModel extends Model
|
||
|
{
|
||
|
protected static string $table = 'test_table';
|
||
|
|
||
|
protected static array $fields = ['name', 'valid'];
|
||
|
|
||
|
protected static array $relations = ['other_model' => OtherModel::class];
|
||
|
|
||
|
private string $name;
|
||
|
|
||
|
private bool $valid;
|
||
|
|
||
|
public function setName(string $name): void
|
||
|
{
|
||
|
$this->name = $name;
|
||
|
}
|
||
|
|
||
|
public function setValid(bool $valid): void
|
||
|
{
|
||
|
$this->valid = $valid;
|
||
|
}
|
||
|
|
||
|
public function getName(): string
|
||
|
{
|
||
|
return $this->name;
|
||
|
}
|
||
|
|
||
|
public function getValid(): bool
|
||
|
{
|
||
|
return $this->valid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
final class ModelTest extends TestCase
|
||
|
{
|
||
|
public function testCanReturnTable(): void
|
||
|
{
|
||
|
$this->assertEquals('test_table', DummyModel::getTable());
|
||
|
}
|
||
|
|
||
|
public function testCanReturnFields(): void
|
||
|
{
|
||
|
$this->assertEquals(['id', 'name', 'valid'], DummyModel::getFields());
|
||
|
}
|
||
|
|
||
|
public function testCanReturnRelations(): void
|
||
|
{
|
||
|
$this->assertEquals(['other_model' => OtherModel::class], DummyModel::getRelations());
|
||
|
}
|
||
|
|
||
|
public function testCanBeConvertedToArray(): void
|
||
|
{
|
||
|
$model = new DummyModel();
|
||
|
$model->setId(123);
|
||
|
$model->setName('John');
|
||
|
$model->setValid(true);
|
||
|
|
||
|
$this->assertEquals([
|
||
|
'id' => 123,
|
||
|
'name' => 'John',
|
||
|
'valid' => true
|
||
|
], $model->toArray());
|
||
|
}
|
||
|
|
||
|
public function testCanSaveAndResetSnapshot(): void
|
||
|
{
|
||
|
$model = new DummyModel();
|
||
|
$model->setId(123);
|
||
|
$model->setName('John');
|
||
|
$model->setValid(true);
|
||
|
|
||
|
$model->saveSnapshot();
|
||
|
|
||
|
$this->assertEquals([
|
||
|
'id' => 123,
|
||
|
'name' => 'John',
|
||
|
'valid' => true
|
||
|
], $model->getSnapshot());
|
||
|
|
||
|
$model->resetSnapshot();
|
||
|
|
||
|
$this->assertEquals([], $model->getSnapshot());
|
||
|
}
|
||
|
}
|