fix: Use generators and fix ItemSearch builders

Signed-off-by: Rubén D <nuxsmin@syspass.org>
This commit is contained in:
Rubén D
2022-11-27 22:20:13 +01:00
parent 5531af39f4
commit 42a77cc5ec
6 changed files with 56 additions and 163 deletions

View File

@@ -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

View File

@@ -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,
]);
}
}

View File

@@ -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

View File

@@ -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,

View File

@@ -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)

View File

@@ -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