%PDF- %PDF-
Direktori : /www/varak.net/dmarc.varak.net/tests/classes/Settings/ |
Current File : /www/varak.net/dmarc.varak.net/tests/classes/Settings/SettingDefaultValueTest.php |
<?php namespace Liuch\DmarcSrg; use Liuch\DmarcSrg\Users\AdminUser; use Liuch\DmarcSrg\Settings\SettingInteger; use Liuch\DmarcSrg\Settings\SettingString; use Liuch\DmarcSrg\Settings\SettingStringSelect; use Liuch\DmarcSrg\Settings\SettingsList; use Liuch\DmarcSrg\Exception\DatabaseNotFoundException; class SettingDefaultValueTest extends \PHPUnit\Framework\TestCase { public function testSettingDefaultValue(): void { foreach (SettingsList::$schema as $name => &$props) { switch ($props['type']) { case 'string': $t2 = false; $val = 0; $ss = 'Liuch\DmarcSrg\Settings\SettingString'; break; case 'integer': $t2 = true; $val = ''; $ss = 'Liuch\DmarcSrg\Settings\SettingInteger'; break; case 'select': $t2 = true; $val = '0'; $ss = 'Liuch\DmarcSrg\Settings\SettingStringSelect'; break; } $user = new AdminUser($this->getCore()); $cc = new $ss([ 'name' => $name, 'value' => $val ], true, $this->getCoreWithDatabaseNever($user)); $this->assertSame($props['default'], strval($cc->value()), "Name: {$name}; Constructor Value"); if ($t2) { $cc = new $ss($name, true, $this->getCoreWithDatabaseMapperOnce($name, $user, $val)); $this->assertSame($props['default'], strval($cc->value()), "Name: {$name}; Database Value"); } unset($ss); } unset($props); } public function testSettingNotFoundDefaultValue(): void { foreach (SettingsList::$schema as $name => &$props) { $user = new AdminUser($this->getCore()); switch ($props['type']) { case 'string': $cc = new SettingString($name, true, $this->getCoreWithDatabaseMapperNotFound($name, $user)); break; case 'integer': $cc = new SettingInteger($name, true, $this->getCoreWithDatabaseMapperNotFound($name, $user)); break; case 'select': $cc = new SettingStringSelect($name, true, $this->getCoreWithDatabaseMapperNotFound($name, $user)); break; } $cc->value(); unset($cc); } unset($props); } private function getCore(): object { return $this->getMockBuilder(Core::class) ->disableOriginalConstructor() ->onlyMethods([ 'getCurrentUser', 'database' ]) ->getMock(); } private function getCoreWithDatabaseNever($user): object { $core = $this->getCore(); $core->expects($this->never())->method('getCurrentUser')->willReturn($user); $core->expects($this->never())->method('database'); return $core; } private function getCoreWithDatabaseMapperOnce($key, $user, $value): object { $mapper = $this->getMockBuilder(Database\SettingMapperInterface::class) ->onlyMethods([ 'value', 'list', 'save' ]) ->getMock(); $mapper->expects($this->once()) ->method('value') ->with($key, $user->id()) ->willReturn($value); $db = $this->getMockBuilder(Database\DatabaseController::class) ->disableOriginalConstructor() ->onlyMethods([ 'getMapper' ]) ->getMock(); $db->expects($this->once()) ->method('getMapper') ->willReturn($mapper); $core = $this->getCore(); $core->expects($this->once())->method('getCurrentUser')->willReturn($user); $core->expects($this->once())->method('database')->willReturn($db); return $core; } private function getCoreWithDatabaseMapperNotFound($parameter, $user): object { $mapper = $this->getMockBuilder(Database\SettingMapperInterface::class) ->disableOriginalConstructor() ->onlyMethods([ 'value', 'list', 'save' ]) ->getMock(); $mapper->expects($this->once()) ->method('value') ->with($this->equalTo($parameter)) ->willThrowException(new DatabaseNotFoundException()); $db = $this->getMockBuilder(Database\DatabaseController::class) ->disableOriginalConstructor() ->onlyMethods([ 'getMapper' ]) ->getMock(); $db->expects($this->once()) ->method('getMapper') ->willReturn($mapper); $core = $this->getCore(); $core->expects($this->once())->method('getCurrentUser')->willReturn($user); $core->expects($this->once())->method('database')->willReturn($db); return $core; } }