%PDF- %PDF-
Direktori : /www/varak.net/dmarc.varak.net/tests/classes/Users/ |
Current File : /www/varak.net/dmarc.varak.net/tests/classes/Users/UserListTest.php |
<?php namespace Liuch\DmarcSrg; use Liuch\DmarcSrg\Users\DbUser; use Liuch\DmarcSrg\Users\UserList; use Liuch\DmarcSrg\Users\AdminUser; use Liuch\DmarcSrg\Exception\SoftException; use Liuch\DmarcSrg\Database\DatabaseController; use Liuch\DmarcSrg\Database\UserMapperInterface; class UserListTest extends \PHPUnit\Framework\TestCase { public function testGetList(): void { $res = (new UserList($this->getDatabaseMapperOnce( 'list', [ [ 'id' => 1, 'name' => 'user1' ], [ 'id' => 2, 'name' => 'user2' ] ] )))->getList(); $this->assertIsArray($res); $this->assertArrayHasKey('more', $res); $this->assertArrayHasKey('users', $res); $this->assertIsBool($res['more']); $this->assertIsArray($res['users']); $this->assertCount(2, $res['users']); $idx = 1; foreach ($res['users'] as $user) { $this->assertInstanceOf(DbUser::class, $user); $this->assertSame($idx, $user->id()); $this->assertSame("user{$idx}", $user->name()); ++$idx; } } public function testGetUserByName(): void { $this->assertInstanceOf( AdminUser::class, UserList::getUserByName('admin', $this->getCore()) ); $this->assertInstanceOf( DbUser::class, UserList::getUserByName('user1', $this->getCoreWithDatabaseMapperOnce('exists', true)) ); $this->expectException(SoftException::class); UserList::getUserByName('unknown', $this->getCoreWithDatabaseMapperOnce('exists', false)); } private function getCore(): object { return $this->getMockBuilder(Core::class)->disableOriginalConstructor()->getMock(); } private function getDatabaseMapperOnce(string $method, $value): object { $mapper = $this->getMockBuilder(UserMapperInterface::class) ->disableOriginalConstructor() ->getMock(); $mapper->expects($this->once()) ->method($method) ->willReturn($value); $db = $this->getMockBuilder(DatabaseController::class) ->disableOriginalConstructor() ->onlyMethods([ 'getMapper' ]) ->getMock(); $db->expects($this->once()) ->method('getMapper') ->with('user') ->willReturn($mapper); return $db; } private function getCoreWithDatabaseMapperOnce(string $method, $value): object { $db = $this->getDatabaseMapperOnce($method, $value); $core = $this->getCore(); $core->expects($this->once()) ->method('database') ->willReturn($db); return $core; } }