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());
 | 
						|
    }
 | 
						|
}
 |