diff --git a/lib/SP/Domain/Account/Adapters/AccountData.php b/lib/SP/Domain/Account/Adapters/AccountData.php index 5bf17b5c..0a409b71 100644 --- a/lib/SP/Domain/Account/Adapters/AccountData.php +++ b/lib/SP/Domain/Account/Adapters/AccountData.php @@ -24,17 +24,15 @@ namespace SP\Domain\Account\Adapters; -use JsonSerializable; use SP\Domain\Common\Adapters\DataModel; use SP\Domain\Common\Adapters\DataModelInterface; -use SP\Http\Json; /** * Class AccountData */ class AccountData extends DataModel implements DataModelInterface { - protected int $id; + protected ?int $id = null; protected ?int $userId = null; protected ?int $userGroupId = null; protected ?int $userEditId = null; @@ -58,11 +56,9 @@ class AccountData extends DataModel implements DataModelInterface protected ?bool $otherUserGroupEdit = false; protected ?bool $otherUserEdit = false; - public function __construct(int $accountId = 0, ?array $properties = []) + public function __construct(?array $properties = []) { parent::__construct($properties); - - $this->id = $accountId; } public function getDateAdd(): ?int diff --git a/tests/SP/Generators/AccountDataGenerator.php b/tests/SP/Generators/AccountDataGenerator.php index 4e939e13..9c7bfb77 100644 --- a/tests/SP/Generators/AccountDataGenerator.php +++ b/tests/SP/Generators/AccountDataGenerator.php @@ -91,4 +91,27 @@ final class AccountDataGenerator extends DataGenerator range(0, 9) ); } + + public function buildAccountHistoryData(): SimpleModel + { + return new SimpleModel([ + 'id' => $this->faker->randomNumber(), + 'accountId' => $this->faker->randomNumber(), + 'name' => $this->faker->name, + 'login' => $this->faker->userName, + 'url' => $this->faker->url, + 'notes' => $this->faker->text, + 'userEditId' => $this->faker->randomNumber(), + 'passDateChange' => $this->faker->unixTime, + 'clientId' => $this->faker->randomNumber(), + 'categoryId' => $this->faker->randomNumber(), + 'isPrivate' => $this->faker->numberBetween(0, 1), + 'isPrivateGroup' => $this->faker->numberBetween(0, 1), + 'parentId' => $this->faker->randomNumber(), + 'userId' => $this->faker->randomNumber(), + 'userGroupId' => $this->faker->randomNumber(), + 'key' => $this->faker->text, + 'pass' => $this->faker->text, + ]); + } } diff --git a/tests/SP/Infrastructure/Account/Repositories/AccountFileRepositoryTest.php b/tests/SP/Infrastructure/Account/Repositories/AccountFileRepositoryTest.php index d10161ac..16461106 100644 --- a/tests/SP/Infrastructure/Account/Repositories/AccountFileRepositoryTest.php +++ b/tests/SP/Infrastructure/Account/Repositories/AccountFileRepositoryTest.php @@ -34,6 +34,7 @@ use SP\Infrastructure\Account\Repositories\AccountFileRepository; use SP\Infrastructure\Database\DatabaseInterface; use SP\Infrastructure\Database\QueryData; use SP\Infrastructure\Database\QueryResult; +use SP\Tests\Generators\FileDataGenerator; use SP\Tests\UnitaryTestCase; /** @@ -48,7 +49,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ - public function testDeleteByIdBatch() + public function testDeleteByIdBatch(): void { $ids = [self::$faker->randomNumber(), self::$faker->randomNumber(), self::$faker->randomNumber()]; @@ -76,7 +77,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ - public function testDeleteByIdBatchWithNoIds() + public function testDeleteByIdBatchWithNoIds(): void { $this->database->expects(self::never()) ->method('doQuery'); @@ -84,53 +85,13 @@ class AccountFileRepositoryTest extends UnitaryTestCase $this->assertEquals(0, $this->accountFileRepository->deleteByIdBatch([])); } - public function testGetAll() - { - $callback = new Callback( - static function (QueryData $arg) { - return $arg->getMapClassName() === SimpleModel::class - && !empty($arg->getQuery()->getStatement()); - } - ); - - $this->database - ->expects(self::once()) - ->method('doSelect') - ->with($callback) - ->willReturn(new QueryResult()); - - $this->accountFileRepository->getAll(); - } - - public function testGetInfoById() - { - $id = self::$faker->randomNumber(); - - $callback = new Callback( - static function (QueryData $arg) use ($id) { - $query = $arg->getQuery(); - - return $query->getBindValues()['id'] === $id - && $arg->getMapClassName() === SimpleModel::class - && !empty($query->getStatement()); - } - ); - - $this->database->expects(self::once()) - ->method('doSelect') - ->with($callback) - ->willReturn(new QueryResult()); - - $this->accountFileRepository->getInfoById($id); - } - /** * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Core\Exceptions\ConstraintException */ - public function testCreate() + public function testCreate(): void { - $fileData = $this->buildFileData(); + $fileData = FileData::buildFromSimpleModel(FileDataGenerator::factory()->buildFileData()); $expected = new QueryResult(); $expected->setLastId(1); @@ -140,13 +101,13 @@ class AccountFileRepositoryTest extends UnitaryTestCase $query = $arg->getQuery(); $params = $query->getBindValues(); - return $params['accountId'] === $fileData->accountId - && $params['name'] === $fileData->name - && $params['type'] === $fileData->type - && $params['thumb'] === $fileData->thumb - && $params['content'] === $fileData->content - && $params['extension'] === $fileData->extension - && $params['size'] === $fileData->size + return $params['accountId'] === $fileData->getAccountId() + && $params['name'] === $fileData->getName() + && $params['type'] === $fileData->getType() + && $params['thumb'] === $fileData->getThumb() + && $params['content'] === $fileData->getContent() + && $params['extension'] === $fileData->getExtension() + && $params['size'] === $fileData->getSize() && !empty($query->getStatement()); } ); @@ -159,22 +120,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase $this->assertEquals($expected->getLastId(), $this->accountFileRepository->create($fileData)); } - private function buildFileData(): FileData - { - $fileData = new FileData(); - $fileData->id = self::$faker->randomNumber(); - $fileData->accountId = self::$faker->randomNumber(); - $fileData->name = self::$faker->name; - $fileData->type = self::$faker->randomNumber(); - $fileData->thumb = self::$faker->image(); - $fileData->content = self::$faker->image(); - $fileData->extension = self::$faker->name(); - $fileData->size = self::$faker->randomNumber(); - - return $fileData; - } - - public function testGetByAccountId() + public function testGetByAccountId(): void { $id = self::$faker->randomNumber(); @@ -196,40 +142,11 @@ class AccountFileRepositoryTest extends UnitaryTestCase $this->accountFileRepository->getByAccountId($id); } - /** - * @throws \SP\Core\Exceptions\QueryException - * @throws \SP\Core\Exceptions\ConstraintException - */ - public function testGetByIdBatch() - { - $ids = [self::$faker->randomNumber(), self::$faker->randomNumber(), self::$faker->randomNumber()]; - - $callback = new Callback( - static function (QueryData $arg) use ($ids) { - $query = $arg->getQuery(); - $values = $query->getBindValues(); - - return array_shift($values) === array_shift($ids) - && array_shift($values) === array_shift($ids) - && array_shift($values) === array_shift($ids) - && $arg->getMapClassName() === SimpleModel::class - && !empty($query->getStatement()); - } - ); - - $this->database->expects(self::once()) - ->method('doQuery') - ->with($callback) - ->willReturn(new QueryResult()); - - $this->accountFileRepository->getByIdBatch($ids); - } - /** * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ - public function testDelete() + public function testDelete(): void { $id = 1; $expected = new QueryResult(); @@ -253,7 +170,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase $this->assertTrue($this->accountFileRepository->delete($id)); } - public function testGetById() + public function testGetById(): void { $id = self::$faker->randomNumber(); @@ -275,15 +192,14 @@ class AccountFileRepositoryTest extends UnitaryTestCase $this->accountFileRepository->getById($id); } - public function testSearch() + public function testSearch(): void { - $item = new ItemSearchData(); - $item->seachString = self::$faker->name; + $item = new ItemSearchData(self::$faker->name); $callback = new Callback( static function (QueryData $arg) use ($item) { $params = $arg->getQuery()->getBindValues(); - $searchStringLike = '%'.$item->seachString.'%'; + $searchStringLike = '%'.$item->getSeachString().'%'; return $params['name'] === $searchStringLike && $params['clientName'] === $searchStringLike diff --git a/tests/SP/Infrastructure/Account/Repositories/AccountHistoryRepositoryTest.php b/tests/SP/Infrastructure/Account/Repositories/AccountHistoryRepositoryTest.php index 240e7bbc..0f515a55 100644 --- a/tests/SP/Infrastructure/Account/Repositories/AccountHistoryRepositoryTest.php +++ b/tests/SP/Infrastructure/Account/Repositories/AccountHistoryRepositoryTest.php @@ -37,6 +37,7 @@ use SP\Infrastructure\Account\Repositories\AccountHistoryRepository; use SP\Infrastructure\Database\DatabaseInterface; use SP\Infrastructure\Database\QueryData; use SP\Infrastructure\Database\QueryResult; +use SP\Tests\Generators\AccountDataGenerator; use SP\Tests\UnitaryTestCase; /** @@ -164,13 +165,12 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase public function testSearch(): void { - $item = new ItemSearchData(); - $item->seachString = self::$faker->name; + $item = new ItemSearchData(self::$faker->name); $callback = new Callback( static function (QueryData $arg) use ($item) { $params = $arg->getQuery()->getBindValues(); - $searchStringLike = '%'.$item->seachString.'%'; + $searchStringLike = '%'.$item->getSeachString().'%'; return $params['name'] === $searchStringLike && $params['clientName'] === $searchStringLike @@ -191,7 +191,7 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase public function testSearchWithoutString(): void { $callback = new Callback( - static function (QueryData $arg) use ($item) { + static function (QueryData $arg) { return count($arg->getQuery()->getBindValues()) === 0 && $arg->getMapClassName() === SimpleModel::class && !empty($arg->getQuery()->getStatement()); @@ -282,34 +282,8 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase private function buildAccountHistoryCreateDto(): AccountHistoryCreateDto { - $accountRequest = new AccountData(); - $accountRequest->id = self::$faker->randomNumber(); - $accountRequest->accountId = self::$faker->randomNumber(); - $accountRequest->name = self::$faker->name; - $accountRequest->login = self::$faker->userName; - $accountRequest->url = self::$faker->url; - $accountRequest->notes = self::$faker->text; - $accountRequest->userEditId = self::$faker->randomNumber(); - $accountRequest->passDateChange = self::$faker->unixTime; - $accountRequest->clientId = self::$faker->randomNumber(); - $accountRequest->categoryId = self::$faker->randomNumber(); - $accountRequest->isPrivate = self::$faker->numberBetween(0, 1); - $accountRequest->isPrivateGroup = self::$faker->numberBetween(0, 1); - $accountRequest->parentId = self::$faker->randomNumber(); - $accountRequest->userId = self::$faker->randomNumber(); - $accountRequest->userGroupId = self::$faker->randomNumber(); - $accountRequest->key = self::$faker->text; - $accountRequest->pass = self::$faker->text; - $accountRequest->passDate = self::$faker->unixTime(); - $accountRequest->passDateChange = self::$faker->unixTime(); - $accountRequest->countView = self::$faker->randomNumber(); - $accountRequest->countDecrypt = self::$faker->randomNumber(); - $accountRequest->dateAdd = self::$faker->unixTime(); - $accountRequest->dateEdit = self::$faker->unixTime(); - $accountRequest->otherUserEdit = self::$faker->boolean(); - return new AccountHistoryCreateDto( - $accountRequest, + AccountData::buildFromSimpleModel(AccountDataGenerator::factory()->buildAccountData()), self::$faker->boolean(), self::$faker->boolean(), self::$faker->sha1, diff --git a/tests/SP/Infrastructure/Account/Repositories/AccountRepositoryTest.php b/tests/SP/Infrastructure/Account/Repositories/AccountRepositoryTest.php index a86ac3a9..d07deb07 100644 --- a/tests/SP/Infrastructure/Account/Repositories/AccountRepositoryTest.php +++ b/tests/SP/Infrastructure/Account/Repositories/AccountRepositoryTest.php @@ -38,6 +38,7 @@ use SP\Infrastructure\Account\Repositories\AccountRepository; use SP\Infrastructure\Database\DatabaseInterface; use SP\Infrastructure\Database\QueryData; use SP\Infrastructure\Database\QueryResult; +use SP\Tests\Generators\AccountDataGenerator; use SP\Tests\UnitaryTestCase; /** @@ -305,24 +306,8 @@ class AccountRepositoryTest extends UnitaryTestCase */ public function testEditRestore(): void { - $accountHistoryData = new AccountHistoryData(); - $accountHistoryData->id = self::$faker->randomNumber(); - $accountHistoryData->accountId = self::$faker->randomNumber(); - $accountHistoryData->name = self::$faker->name; - $accountHistoryData->login = self::$faker->userName; - $accountHistoryData->url = self::$faker->url; - $accountHistoryData->notes = self::$faker->text; - $accountHistoryData->userEditId = self::$faker->randomNumber(); - $accountHistoryData->passDateChange = self::$faker->unixTime; - $accountHistoryData->clientId = self::$faker->randomNumber(); - $accountHistoryData->categoryId = self::$faker->randomNumber(); - $accountHistoryData->isPrivate = self::$faker->numberBetween(0, 1); - $accountHistoryData->isPrivateGroup = self::$faker->numberBetween(0, 1); - $accountHistoryData->parentId = self::$faker->randomNumber(); - $accountHistoryData->userId = self::$faker->randomNumber(); - $accountHistoryData->userGroupId = self::$faker->randomNumber(); - $accountHistoryData->key = self::$faker->text; - $accountHistoryData->pass = self::$faker->text; + $accountHistoryData = + AccountHistoryData::buildFromSimpleModel(AccountDataGenerator::factory()->buildAccountHistoryData()); $userId = 1; @@ -652,13 +637,12 @@ class AccountRepositoryTest extends UnitaryTestCase public function testSearch(): void { - $item = new ItemSearchData(); - $item->seachString = self::$faker->name; + $item = new ItemSearchData(self::$faker->name); $callback = new Callback( static function (QueryData $arg) use ($item) { $params = $arg->getQuery()->getBindValues(); - $searchStringLike = '%'.$item->seachString.'%'; + $searchStringLike = '%'.$item->getSeachString().'%'; return $params['name'] === $searchStringLike && $params['clientName'] === $searchStringLike @@ -881,6 +865,7 @@ class AccountRepositoryTest extends UnitaryTestCase $this->database = $this->createMock(DatabaseInterface::class); $queryFactory = new QueryFactory('mysql'); + /** @noinspection ClassMockingCorrectnessInspection */ /** @noinspection PhpUnitInvalidMockingEntityInspection */ $this->accountFilterUser = $this->getMockBuilder(AccountFilterUser::class) diff --git a/tests/SP/Infrastructure/Account/Repositories/PublicLinkRepositoryTest.php b/tests/SP/Infrastructure/Account/Repositories/PublicLinkRepositoryTest.php index e4b80080..bcf7a102 100644 --- a/tests/SP/Infrastructure/Account/Repositories/PublicLinkRepositoryTest.php +++ b/tests/SP/Infrastructure/Account/Repositories/PublicLinkRepositoryTest.php @@ -73,13 +73,12 @@ class PublicLinkRepositoryTest extends UnitaryTestCase public function testSearch(): void { - $item = new ItemSearchData(); - $item->seachString = self::$faker->name; + $item = new ItemSearchData(self::$faker->name); $callback = new Callback( static function (QueryData $arg) use ($item) { $params = $arg->getQuery()->getBindValues(); - $searchStringLike = '%'.$item->seachString.'%'; + $searchStringLike = '%'.$item->getSeachString().'%'; return $params['login'] === $searchStringLike && $params['accountName'] === $searchStringLike