From 908d0ad3c48b5335365049354d3d5f32e20cd00c Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 14 Apr 2022 14:47:30 +0300 Subject: [PATCH] refactoring --- .../Applier.php} | 4 +- .../Core/Select/Applier/Appliers/Limit.php | 4 +- .../Espo/Core/Select/Applier/Factory.php | 100 +++++++++++++++--- .../BoolFilterList.php => Bool/Applier.php} | 14 +-- .../Appliers/Order.php => Order/Applier.php} | 4 +- .../PrimaryFilter.php => Primary/Applier.php} | 27 ++--- .../Select.php => Select/Applier.php} | 31 ++---- .../Espo/Core/Select/SelectBuilder.php | 83 ++++----------- .../TextFilter.php => Text/Applier.php} | 4 +- .../Appliers/Where.php => Where/Applier.php} | 12 +-- .../AccessControlFilterApplierTest.php | 2 +- .../Appliers/BoolFilterListApplierTest.php | 2 +- .../Applier/Appliers/OrderApplierTest.php | 2 +- .../Appliers/PrimaryFilterApplierTest.php | 2 +- .../Applier/Appliers/SelectApplierTest.php | 2 +- .../Appliers/TextFilterApplierTest.php | 2 +- .../Applier/Appliers/WhereApplierTest.php | 2 +- .../Espo/Core/Select/Applier/FactoryTest.php | 41 +++---- .../Espo/Core/Select/SelectBuilderTest.php | 84 +++++++++++---- 19 files changed, 238 insertions(+), 184 deletions(-) rename application/Espo/Core/Select/{Applier/Appliers/AccessControlFilter.php => AccessControl/Applier.php} (98%) rename application/Espo/Core/Select/{Applier/Appliers/BoolFilterList.php => Bool/Applier.php} (94%) rename application/Espo/Core/Select/{Applier/Appliers/Order.php => Order/Applier.php} (99%) rename application/Espo/Core/Select/{Applier/Appliers/PrimaryFilter.php => Primary/Applier.php} (86%) rename application/Espo/Core/Select/{Applier/Appliers/Select.php => Select/Applier.php} (90%) rename application/Espo/Core/Select/{Applier/Appliers/TextFilter.php => Text/Applier.php} (99%) rename application/Espo/Core/Select/{Applier/Appliers/Where.php => Where/Applier.php} (91%) diff --git a/application/Espo/Core/Select/Applier/Appliers/AccessControlFilter.php b/application/Espo/Core/Select/AccessControl/Applier.php similarity index 98% rename from application/Espo/Core/Select/Applier/Appliers/AccessControlFilter.php rename to application/Espo/Core/Select/AccessControl/Applier.php index 43befa2e7a..acb03fc641 100644 --- a/application/Espo/Core/Select/Applier/Appliers/AccessControlFilter.php +++ b/application/Espo/Core/Select/AccessControl/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\AccessControl; use Espo\Core\Select\OrmSelectBuilder; @@ -43,7 +43,7 @@ use Espo\{ Entities\User, }; -class AccessControlFilter +class Applier { private string $entityType; diff --git a/application/Espo/Core/Select/Applier/Appliers/Limit.php b/application/Espo/Core/Select/Applier/Appliers/Limit.php index 6d466e94db..c8d856dae4 100644 --- a/application/Espo/Core/Select/Applier/Appliers/Limit.php +++ b/application/Espo/Core/Select/Applier/Appliers/Limit.php @@ -29,9 +29,7 @@ namespace Espo\Core\Select\Applier\Appliers; -use Espo\{ - ORM\Query\SelectBuilder as QueryBuilder, -}; +use Espo\ORM\Query\SelectBuilder as QueryBuilder; class Limit { diff --git a/application/Espo/Core/Select/Applier/Factory.php b/application/Espo/Core/Select/Applier/Factory.php index f1920cb54a..46b588708f 100644 --- a/application/Espo/Core/Select/Applier/Factory.php +++ b/application/Espo/Core/Select/Applier/Factory.php @@ -29,6 +29,18 @@ namespace Espo\Core\Select\Applier; +use Espo\Core\Select\Text\Applier as TextFilterApplier; +use Espo\Core\Select\AccessControl\Applier as AccessControlFilterApplier; +use Espo\Core\Select\Where\Applier as WhereApplier; +use Espo\Core\Select\Select\Applier as SelectApplier; +use Espo\Core\Select\Primary\Applier as PrimaryFilterApplier; +use Espo\Core\Select\Order\Applier as OrderApplier; +use Espo\Core\Select\Bool\Applier as BoolFilterListApplier; +use Espo\Core\Select\Applier\Appliers\Additional as AdditionalApplier; +use Espo\Core\Select\Applier\Appliers\Limit as LimitApplier; + +use Espo\Core\Exceptions\Error; + use Espo\Core\{ InjectableFactory, Utils\Metadata, @@ -44,23 +56,30 @@ use Espo\Entities\User; class Factory { public const SELECT = 'select'; - public const WHERE = 'where'; - public const ORDER = 'order'; - public const LIMIT = 'limit'; - public const ACCESS_CONTROL_FILTER = 'accessControlFilter'; - public const TEXT_FILTER = 'textFilter'; - public const PRIMARY_FILTER = 'primaryFilter'; - public const BOOL_FILTER_LIST = 'boolFilterList'; - public const ADDITIONAL = 'additional'; + /** + * @var array> + */ + private array $defaultClassNameMap = [ + self::TEXT_FILTER => TextFilterApplier::class, + self::ACCESS_CONTROL_FILTER => AccessControlFilterApplier::class, + self::WHERE => WhereApplier::class, + self::SELECT => SelectApplier::class, + self::PRIMARY_FILTER => PrimaryFilterApplier::class, + self::ORDER => OrderApplier::class, + self::BOOL_FILTER_LIST => BoolFilterListApplier::class, + self::ADDITIONAL => AdditionalApplier::class, + self::LIMIT => LimitApplier::class, + ]; + private InjectableFactory $injectableFactory; private Metadata $metadata; @@ -77,7 +96,7 @@ class Factory $this->selectManagerFactory = $selectManagerFactory; } - public function create(string $entityType, User $user, string $type): object + private function create(string $entityType, User $user, string $type): object { /** @var class-string */ $className = $this->metadata->get( @@ -108,14 +127,69 @@ class Factory return $this->injectableFactory->createWithBinding($className, $bindingContainer); } + public function createWhere(string $entityType, User $user): WhereApplier + { + /** @var WhereApplier */ + return $this->create($entityType, $user, self::WHERE); + } + + public function createSelect(string $entityType, User $user): SelectApplier + { + /** @var SelectApplier */ + return $this->create($entityType, $user, self::SELECT); + } + + public function createOrder(string $entityType, User $user): OrderApplier + { + /** @var OrderApplier */ + return $this->create($entityType, $user, self::ORDER); + } + + public function createLimit(string $entityType, User $user): LimitApplier + { + /** @var LimitApplier */ + return $this->create($entityType, $user, self::LIMIT); + } + + public function createAccessControlFilter(string $entityType, User $user): AccessControlFilterApplier + { + /** @var AccessControlFilterApplier */ + return $this->create($entityType, $user, self::ACCESS_CONTROL_FILTER); + } + + public function createTextFilter(string $entityType, User $user): TextFilterApplier + { + /** @var TextFilterApplier */ + return $this->create($entityType, $user, self::TEXT_FILTER); + } + + public function createPrimaryFilter(string $entityType, User $user): PrimaryFilterApplier + { + /** @var PrimaryFilterApplier */ + return $this->create($entityType, $user, self::PRIMARY_FILTER); + } + + public function createBoolFilterList(string $entityType, User $user): BoolFilterListApplier + { + /** @var BoolFilterListApplier */ + return $this->create($entityType, $user, self::BOOL_FILTER_LIST); + } + + public function createAdditional(string $entityType, User $user): AdditionalApplier + { + /** @var AdditionalApplier */ + return $this->create($entityType, $user, self::ADDITIONAL); + } + /** * @return class-string */ - protected function getDefaultClassName(string $type): string + private function getDefaultClassName(string $type): string { - /** @var class-string */ - $className = 'Espo\\Core\\Select\\Applier\Appliers\\' . ucfirst($type); + if (array_key_exists($type, $this->defaultClassNameMap)) { + return $this->defaultClassNameMap[$type]; + } - return $className; + throw new Error("Applier `$type` does not exist."); } } diff --git a/application/Espo/Core/Select/Applier/Appliers/BoolFilterList.php b/application/Espo/Core/Select/Bool/Applier.php similarity index 94% rename from application/Espo/Core/Select/Applier/Appliers/BoolFilterList.php rename to application/Espo/Core/Select/Bool/Applier.php index c00f08a5f9..40ce213ba7 100644 --- a/application/Espo/Core/Select/Applier/Appliers/BoolFilterList.php +++ b/application/Espo/Core/Select/Bool/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Bool; use Espo\Core\Select\OrmSelectBuilder; use Espo\Core\Exceptions\Error; @@ -41,15 +41,15 @@ use Espo\ORM\Query\Part\WhereClause; use Espo\Entities\User; -class BoolFilterList +class Applier { - protected string $entityType; + private string $entityType; - protected User $user; + private User $user; - protected SelectManager $selectManager; + private SelectManager $selectManager; - protected BoolFilterFactory $boolFilterFactory; + private BoolFilterFactory $boolFilterFactory; public function __construct( string $entityType, @@ -89,7 +89,7 @@ class BoolFilterList ); } - protected function applyBoolFilter( + private function applyBoolFilter( QueryBuilder $queryBuilder, OrGroupBuilder $orGroupBuilder, string $filterName diff --git a/application/Espo/Core/Select/Applier/Appliers/Order.php b/application/Espo/Core/Select/Order/Applier.php similarity index 99% rename from application/Espo/Core/Select/Applier/Appliers/Order.php rename to application/Espo/Core/Select/Order/Applier.php index b9d70c88b7..56af8b4de1 100644 --- a/application/Espo/Core/Select/Applier/Appliers/Order.php +++ b/application/Espo/Core/Select/Order/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Order; use Espo\ORM\Query\Part\OrderList; @@ -44,7 +44,7 @@ use Espo\Core\{ use Espo\ORM\Query\SelectBuilder as QueryBuilder; -class Order +class Applier { private string $entityType; diff --git a/application/Espo/Core/Select/Applier/Appliers/PrimaryFilter.php b/application/Espo/Core/Select/Primary/Applier.php similarity index 86% rename from application/Espo/Core/Select/Applier/Appliers/PrimaryFilter.php rename to application/Espo/Core/Select/Primary/Applier.php index b3f2b3f4d0..098e825355 100644 --- a/application/Espo/Core/Select/Applier/Appliers/PrimaryFilter.php +++ b/application/Espo/Core/Select/Primary/Applier.php @@ -27,30 +27,25 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Primary; +use Espo\Core\Exceptions\Error; +use Espo\Core\Select\SelectManager; +use Espo\Core\Select\Primary\FilterFactory; use Espo\Core\Select\OrmSelectBuilder; -use Espo\Core\{ - Exceptions\Error, - Select\SelectManager, - Select\Primary\FilterFactory, -}; +use Espo\ORM\Query\SelectBuilder as QueryBuilder; +use Espo\Entities\User; -use Espo\{ - ORM\Query\SelectBuilder as QueryBuilder, - Entities\User, -}; - -class PrimaryFilter +class Applier { - protected string $entityType; + private string $entityType; - protected User $user; + private User $user; - protected SelectManager $selectManager; + private SelectManager $selectManager; - protected FilterFactory $primaryFilterFactory; + private FilterFactory $primaryFilterFactory; public function __construct( string $entityType, diff --git a/application/Espo/Core/Select/Applier/Appliers/Select.php b/application/Espo/Core/Select/Select/Applier.php similarity index 90% rename from application/Espo/Core/Select/Applier/Appliers/Select.php rename to application/Espo/Core/Select/Select/Applier.php index e368e6fcbe..6c0402e84a 100644 --- a/application/Espo/Core/Select/Applier/Appliers/Select.php +++ b/application/Espo/Core/Select/Select/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Select; use Espo\Core\{ Select\SearchParams, @@ -41,12 +41,12 @@ use Espo\{ Entities\User, }; -class Select +class Applier { /** * @var string[] */ - protected $aclAttributeList = [ + private $aclAttributeList = [ 'assignedUserId', 'createdById', ]; @@ -54,29 +54,20 @@ class Select /** * @var string[] */ - protected $aclPortalAttributeList = [ + private $aclPortalAttributeList = [ 'assignedUserId', 'createdById', 'contactId', 'accountId', ]; - protected string $entityType; + private string $entityType; - /** - * @var User - */ - protected $user; + private User $user; - /** - * @var FieldUtil - */ - protected $fieldUtil; + private FieldUtil $fieldUtil; - /** - * @var MetadataProvider - */ - protected $metadataProvider; + private MetadataProvider $metadataProvider; public function __construct( string $entityType, @@ -105,7 +96,7 @@ class Select * @param string[] $attributeList * @return array */ - protected function prepareAttributeList(array $attributeList, SearchParams $searchParams): array + private function prepareAttributeList(array $attributeList, SearchParams $searchParams): array { $limit = $searchParams->getMaxTextAttributeLength(); @@ -138,7 +129,7 @@ class Select /** * @return ?string[] */ - protected function getSelectAttributeList(SearchParams $searchParams): ?array + private function getSelectAttributeList(SearchParams $searchParams): ?array { $passedAttributeList = $searchParams->getSelect(); @@ -217,7 +208,7 @@ class Select /** * @return string[] */ - protected function getAclAttributeList(): array + private function getAclAttributeList(): array { if ($this->user->isPortal()) { return diff --git a/application/Espo/Core/Select/SelectBuilder.php b/application/Espo/Core/Select/SelectBuilder.php index 370972de7e..228d7c9d11 100644 --- a/application/Espo/Core/Select/SelectBuilder.php +++ b/application/Espo/Core/Select/SelectBuilder.php @@ -30,21 +30,21 @@ namespace Espo\Core\Select; use Espo\Core\Select\Applier\Factory as ApplierFactory; -use Espo\Core\Select\Applier\Appliers\Where as WhereApplier; -use Espo\Core\Select\Applier\Appliers\Select as SelectApplier; -use Espo\Core\Select\Applier\Appliers\Order as OrderApplier; -use Espo\Core\Select\Applier\Appliers\Limit as LimitApplier; -use Espo\Core\Select\Applier\Appliers\AccessControlFilter as AccessControlFilterApplier; -use Espo\Core\Select\Applier\Appliers\PrimaryFilter as PrimaryFilterApplier; -use Espo\Core\Select\Applier\Appliers\BoolFilterList as BoolFilterListApplier; -use Espo\Core\Select\Applier\Appliers\TextFilter as TextFilterApplier; -use Espo\Core\Select\Applier\Appliers\Additional as AdditionalApplier; - use Espo\Core\Select\Where\Params as WhereParams; use Espo\Core\Select\Where\Item as WhereItem; use Espo\Core\Select\Order\Params as OrderParams; use Espo\Core\Select\Text\FilterParams as TextFilterParams; +use Espo\Core\Select\Where\Applier as WhereApplier; +use Espo\Core\Select\Select\Applier as SelectApplier; +use Espo\Core\Select\Order\Applier as OrderApplier; +use Espo\Core\Select\AccessControl\Applier as AccessControlFilterApplier; +use Espo\Core\Select\Primary\Applier as PrimaryFilterApplier; +use Espo\Core\Select\Bool\Applier as BoolFilterListApplier; +use Espo\Core\Select\Text\Applier as TextFilterApplier; +use Espo\Core\Select\Applier\Appliers\Limit as LimitApplier; +use Espo\Core\Select\Applier\Appliers\Additional as AdditionalApplier; + use Espo\ORM\Query\Select as Query; use Espo\ORM\Query\SelectBuilder as QueryBuilder; @@ -525,107 +525,62 @@ class SelectBuilder { assert($this->entityType !== null); - /** @var WhereApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::WHERE - ); + return $this->applierFactory->createWhere($this->entityType, $this->user); } private function createSelectApplier(): SelectApplier { assert($this->entityType !== null); - /** @var SelectApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::SELECT - ); + return $this->applierFactory->createSelect($this->entityType, $this->user); } private function createOrderApplier(): OrderApplier { assert($this->entityType !== null); - /** @var OrderApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::ORDER - ); + return $this->applierFactory->createOrder($this->entityType, $this->user); } private function createLimitApplier(): LimitApplier { assert($this->entityType !== null); - /** @var LimitApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::LIMIT - ); + return $this->applierFactory->createLimit($this->entityType, $this->user); } private function createAccessControlFilterApplier(): AccessControlFilterApplier { assert($this->entityType !== null); - /** @var AccessControlFilterApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::ACCESS_CONTROL_FILTER - ); + return $this->applierFactory->createAccessControlFilter($this->entityType, $this->user); } private function createTextFilterApplier(): TextFilterApplier { assert($this->entityType !== null); - /** @var TextFilterApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::TEXT_FILTER - ); + return $this->applierFactory->createTextFilter($this->entityType, $this->user); } private function createPrimaryFilterApplier(): PrimaryFilterApplier { assert($this->entityType !== null); - /** @var PrimaryFilterApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::PRIMARY_FILTER - ); + return $this->applierFactory->createPrimaryFilter($this->entityType, $this->user); } private function createBoolFilterListApplier(): BoolFilterListApplier { assert($this->entityType !== null); - /** @var BoolFilterListApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::BOOL_FILTER_LIST - ); + return $this->applierFactory->createBoolFilterList($this->entityType, $this->user); } private function createAdditionalApplier(): AdditionalApplier { assert($this->entityType !== null); - /** @var AdditionalApplier */ - return $this->applierFactory->create( - $this->entityType, - $this->user, - ApplierFactory::ADDITIONAL - ); + return $this->applierFactory->createAdditional($this->entityType, $this->user); } } diff --git a/application/Espo/Core/Select/Applier/Appliers/TextFilter.php b/application/Espo/Core/Select/Text/Applier.php similarity index 99% rename from application/Espo/Core/Select/Applier/Appliers/TextFilter.php rename to application/Espo/Core/Select/Text/Applier.php index da8edf4dbb..55f7396f51 100644 --- a/application/Espo/Core/Select/Applier/Appliers/TextFilter.php +++ b/application/Espo/Core/Select/Text/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Text; use Espo\Core\Select\Text\MetadataProvider; use Espo\Core\Select\Text\FilterParams; @@ -44,7 +44,7 @@ use Espo\ORM\Query\Part\WhereItem; use Espo\Entities\User; -class TextFilter +class Applier { /** @todo Move to metadata. */ private ?int $fullTextRelevanceThreshold = null; diff --git a/application/Espo/Core/Select/Applier/Appliers/Where.php b/application/Espo/Core/Select/Where/Applier.php similarity index 91% rename from application/Espo/Core/Select/Applier/Appliers/Where.php rename to application/Espo/Core/Select/Where/Applier.php index df97701550..69e9b52302 100644 --- a/application/Espo/Core/Select/Applier/Appliers/Where.php +++ b/application/Espo/Core/Select/Where/Applier.php @@ -27,7 +27,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -namespace Espo\Core\Select\Applier\Appliers; +namespace Espo\Core\Select\Where; use Espo\Core\{ Select\Where\Params, @@ -41,15 +41,15 @@ use Espo\{ Entities\User, }; -class Where +class Applier { - protected string $entityType; + private string $entityType; - protected User $user; + private User $user; - protected ConverterFactory $converterFactory; + private ConverterFactory $converterFactory; - protected CheckerFactory $checkerFactory; + private CheckerFactory $checkerFactory; public function __construct( string $entityType, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/AccessControlFilterApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/AccessControlFilterApplierTest.php index e3b1c13716..b0594a9b46 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/AccessControlFilterApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/AccessControlFilterApplierTest.php @@ -31,7 +31,7 @@ namespace tests\unit\Espo\Core\Select\Applier\Appliers; use Espo\Core\{ Exceptions\Error, - Select\Applier\Appliers\AccessControlFilter as AccessControlFilterApplier, + Select\AccessControl\Applier as AccessControlFilterApplier, Select\SelectManager, Select\AccessControl\FilterFactory as AccessControlFilterFactory, Select\AccessControl\FilterResolverFactory as AccessControlFilterResolverFactory, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/BoolFilterListApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/BoolFilterListApplierTest.php index b69b1d432f..ad653ba386 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/BoolFilterListApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/BoolFilterListApplierTest.php @@ -31,7 +31,7 @@ namespace tests\unit\Espo\Core\Select\Applier\Appliers; use Espo\Core\{ Exceptions\Error, - Select\Applier\Appliers\BoolFilterList as BoolFilterListApplier, + Select\Bool\Applier as BoolFilterListApplier, Select\Bool\FilterFactory as BoolFilterFactory, Select\Bool\Filter as BoolFilter, Select\SelectManager, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/OrderApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/OrderApplierTest.php index 4ccdbd2bfa..614ac939e7 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/OrderApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/OrderApplierTest.php @@ -34,7 +34,7 @@ use Espo\ORM\Query\Part\Order; use Espo\Core\{ Exceptions\Error, - Select\Applier\Appliers\Order as OrderApplier, + Select\Order\Applier as OrderApplier, Select\SearchParams, Select\Order\Params as OrderParams, Select\Order\Item, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/PrimaryFilterApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/PrimaryFilterApplierTest.php index b8967db543..c6e1ddae3d 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/PrimaryFilterApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/PrimaryFilterApplierTest.php @@ -31,7 +31,7 @@ namespace tests\unit\Espo\Core\Select\Applier\Appliers; use Espo\Core\{ Exceptions\Error, - Select\Applier\Appliers\PrimaryFilter as PrimaryFilterApplier, + Select\Primary\Applier as PrimaryFilterApplier, Select\Primary\FilterFactory as PrimaryFilterFactory, Select\Primary\Filter as PrimaryFilter, Select\SelectManager, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/SelectApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/SelectApplierTest.php index 744e005a6c..e850b947a7 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/SelectApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/SelectApplierTest.php @@ -30,7 +30,7 @@ namespace tests\unit\Espo\Core\Select\Applier\Appliers; use Espo\Core\{ - Select\Applier\Appliers\Select as SelectApplier, + Select\Select\Applier as SelectApplier, Select\SearchParams, Select\Select\MetadataProvider, Utils\FieldUtil, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/TextFilterApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/TextFilterApplierTest.php index 8af38552ad..9d894de20c 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/TextFilterApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/TextFilterApplierTest.php @@ -30,7 +30,7 @@ namespace tests\unit\Espo\Core\Select\Applier\Appliers; use Espo\Core\{ - Select\Applier\Appliers\TextFilter as TextFilterApplier, + Select\Text\Applier as TextFilterApplier, Utils\Config, Select\Text\MetadataProvider, Select\Text\FilterParams, diff --git a/tests/unit/Espo/Core/Select/Applier/Appliers/WhereApplierTest.php b/tests/unit/Espo/Core/Select/Applier/Appliers/WhereApplierTest.php index 98202a7b68..ac9639c8c0 100644 --- a/tests/unit/Espo/Core/Select/Applier/Appliers/WhereApplierTest.php +++ b/tests/unit/Espo/Core/Select/Applier/Appliers/WhereApplierTest.php @@ -36,7 +36,7 @@ use Espo\Core\{ Select\Where\ConverterFactory, Select\Where\CheckerFactory, Select\Where\Item as WhereItem, - Select\Applier\Appliers\Where as WhereApplier, + Select\Where\Applier as WhereApplier, }; use Espo\{ diff --git a/tests/unit/Espo/Core/Select/Applier/FactoryTest.php b/tests/unit/Espo/Core/Select/Applier/FactoryTest.php index e698e1623a..0f7500ea51 100644 --- a/tests/unit/Espo/Core/Select/Applier/FactoryTest.php +++ b/tests/unit/Espo/Core/Select/Applier/FactoryTest.php @@ -33,14 +33,14 @@ use Espo\Core\{ Select\Applier\Factory as ApplierFactory, Select\SelectManagerFactory, Select\SelectManager, - Select\Applier\Appliers\Where as WhereApplier, - Select\Applier\Appliers\Select as SelectApplier, - Select\Applier\Appliers\Order as OrderApplier, + Select\Where\Applier as WhereApplier, + Select\Select\Applier as SelectApplier, + Select\Order\Applier as OrderApplier, Select\Applier\Appliers\Limit as LimitApplier, - Select\Applier\Appliers\AccessControlFilter as AccessControlFilterApplier, - Select\Applier\Appliers\PrimaryFilter as PrimaryFilterApplier, - Select\Applier\Appliers\BoolFilterList as BoolFilterListApplier, - Select\Applier\Appliers\TextFilter as TextFilterApplier, + Select\AccessControl\Applier as AccessControlFilterApplier, + Select\Primary\Applier as PrimaryFilterApplier, + Select\Bool\Applier as BoolFilterListApplier, + Select\Text\Applier as TextFilterApplier, Select\Applier\Appliers\Additional as AdditionalApplier, Utils\Metadata, InjectableFactory, @@ -55,7 +55,7 @@ use Espo\{ class FactoryTest extends \PHPUnit\Framework\TestCase { - protected function setUp() : void + protected function setUp(): void { $this->injectableFactory = $this->createMock(InjectableFactory::class); $this->metadata = $this->createMock(Metadata::class); @@ -73,50 +73,53 @@ class FactoryTest extends \PHPUnit\Framework\TestCase public function testCreate1() { - $this->prepareFactoryTest(null, SelectApplier::class, ApplierFactory::SELECT); + $this->prepareFactoryTest(null, SelectApplier::class, ApplierFactory::SELECT, 'createSelect'); } public function testCreate2() { - $this->prepareFactoryTest('SomeClass', BoolFilterListApplier::class, ApplierFactory::BOOL_FILTER_LIST); + $this->prepareFactoryTest( + 'SomeClass', BoolFilterListApplier::class, ApplierFactory::BOOL_FILTER_LIST, 'createBoolFilterList'); } public function testCreate3() { - $this->prepareFactoryTest(null, TextFilterApplier::class, ApplierFactory::TEXT_FILTER); + $this->prepareFactoryTest(null, TextFilterApplier::class, ApplierFactory::TEXT_FILTER, 'createTextFilter'); } public function testCreate4() { - $this->prepareFactoryTest(null, WhereApplier::class, ApplierFactory::WHERE); + $this->prepareFactoryTest(null, WhereApplier::class, ApplierFactory::WHERE, 'createWhere'); } public function testCreate5() { - $this->prepareFactoryTest(null, OrderApplier::class, ApplierFactory::ORDER); + $this->prepareFactoryTest(null, OrderApplier::class, ApplierFactory::ORDER, 'createOrder'); } public function testCreate6() { - $this->prepareFactoryTest(null, LimitApplier::class, ApplierFactory::LIMIT); + $this->prepareFactoryTest(null, LimitApplier::class, ApplierFactory::LIMIT, 'createLimit'); } public function testCreate7() { - $this->prepareFactoryTest(null, AdditionalApplier::class, ApplierFactory::ADDITIONAL); + $this->prepareFactoryTest(null, AdditionalApplier::class, ApplierFactory::ADDITIONAL, 'createAdditional'); } public function testCreate8() { - $this->prepareFactoryTest(null, PrimaryFilterApplier::class, ApplierFactory::PRIMARY_FILTER); + $this->prepareFactoryTest( + null, PrimaryFilterApplier::class, ApplierFactory::PRIMARY_FILTER, 'createPrimaryFilter'); } public function testCreate9() { - $this->prepareFactoryTest(null, AccessControlFilterApplier::class, ApplierFactory::ACCESS_CONTROL_FILTER); + $this->prepareFactoryTest + (null, AccessControlFilterApplier::class, ApplierFactory::ACCESS_CONTROL_FILTER, 'createAccessControlFilter'); } - protected function prepareFactoryTest(?string $className, string $defaultClassName, string $type) + protected function prepareFactoryTest(?string $className, string $defaultClassName, string $type, string $method) { $entityType = 'Test'; @@ -155,7 +158,7 @@ class FactoryTest extends \PHPUnit\Framework\TestCase ->with($applierClassName, $bindingContainer) ->willReturn($applier); - $resultApplier = $this->factory->create( + $resultApplier = $this->factory->$method( $entityType, $this->user, $type diff --git a/tests/unit/Espo/Core/Select/SelectBuilderTest.php b/tests/unit/Espo/Core/Select/SelectBuilderTest.php index ad7075ff64..fc37c9d671 100644 --- a/tests/unit/Espo/Core/Select/SelectBuilderTest.php +++ b/tests/unit/Espo/Core/Select/SelectBuilderTest.php @@ -33,14 +33,15 @@ use Espo\Core\Select\{ SelectBuilder, SearchParams, Applier\Factory as ApplierFactory, - Applier\Appliers\Where as WhereApplier, - Applier\Appliers\Select as SelectApplier, - Applier\Appliers\Order as OrderApplier, - Applier\Appliers\AccessControlFilter as AccessControlFilterApplier, - Applier\Appliers\PrimaryFilter as PrimaryFilterApplier, - Applier\Appliers\TextFilter as TextFilterApplier, + Where\Applier as WhereApplier, + Select\Applier as SelectApplier, + Order\Applier as OrderApplier, + AccessControl\Applier as AccessControlFilterApplier, + Primary\Applier as PrimaryFilterApplier, + Text\Applier as TextFilterApplier, Applier\Appliers\Additional as AdditionalApplier, - Applier\Appliers\BoolFilterList as BoolFilterListApplier, + Applier\Appliers\Limit as LimitApplier, + Bool\Applier as BoolFilterListApplier, Where\Params as WhereParams, Order\Params as OrderParams, Text\FilterParams as TextFilterParams, @@ -58,7 +59,7 @@ class SelectBuilderTest extends \PHPUnit\Framework\TestCase */ private $selectBuilder; - protected function setUp() : void + protected function setUp(): void { $this->user = $this->createMock(User::class); $this->applierFactory = $this->createMock(ApplierFactory::class); @@ -68,7 +69,7 @@ class SelectBuilderTest extends \PHPUnit\Framework\TestCase $this->whereApplier = $this->createMock(WhereApplier::class); $this->selectApplier = $this->createMock(SelectApplier::class); $this->orderApplier = $this->createMock(OrderApplier::class); - $this->limitApplier = $this->createMock(WhereApplier::class); + $this->limitApplier = $this->createMock(LimitApplier::class); $this->accessControlFilterApplier = $this->createMock(AccessControlFilterApplier::class); $this->textFilterApplier = $selectApplier = $this->createMock(TextFilterApplier::class); $this->primaryFilterApplier = $selectApplier = $this->createMock(PrimaryFilterApplier::class); @@ -77,20 +78,57 @@ class SelectBuilderTest extends \PHPUnit\Framework\TestCase $this->applierFactory ->expects($this->any()) - ->method('create') - ->will( - $this->returnValueMap([ - [$this->entityType, $this->user, ApplierFactory::WHERE, $this->whereApplier], - [$this->entityType, $this->user, ApplierFactory::SELECT, $this->selectApplier], - [$this->entityType, $this->user, ApplierFactory::ORDER, $this->orderApplier], - [$this->entityType, $this->user, ApplierFactory::LIMIT, $this->limitApplier], - [$this->entityType, $this->user, ApplierFactory::ACCESS_CONTROL_FILTER, $this->accessControlFilterApplier], - [$this->entityType, $this->user, ApplierFactory::TEXT_FILTER, $this->textFilterApplier], - [$this->entityType, $this->user, ApplierFactory::PRIMARY_FILTER, $this->primaryFilterApplier], - [$this->entityType, $this->user, ApplierFactory::BOOL_FILTER_LIST, $this->boolFilterListApplier], - [$this->entityType, $this->user, ApplierFactory::ADDITIONAL, $this->additionalApplier], - ]) - ); + ->method('createWhere') + ->with($this->entityType, $this->user) + ->willReturn($this->whereApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createSelect') + ->with($this->entityType, $this->user) + ->willReturn($this->selectApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createOrder') + ->with($this->entityType, $this->user) + ->willReturn($this->orderApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createLimit') + ->with($this->entityType, $this->user) + ->willReturn($this->limitApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createAccessControlFilter') + ->with($this->entityType, $this->user) + ->willReturn($this->accessControlFilterApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createTextFilter') + ->with($this->entityType, $this->user) + ->willReturn($this->textFilterApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createPrimaryFilter') + ->with($this->entityType, $this->user) + ->willReturn($this->primaryFilterApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createBoolFilterList') + ->with($this->entityType, $this->user) + ->willReturn($this->boolFilterListApplier); + + $this->applierFactory + ->expects($this->any()) + ->method('createAdditional') + ->with($this->entityType, $this->user) + ->willReturn($this->additionalApplier); $this->selectBuilder = new SelectBuilder($this->user, $this->applierFactory); }