discard applierClassNameMap

This commit is contained in:
Yuri Kuznetsov
2023-03-05 16:37:39 +02:00
parent 6fe4034237
commit 0e371ebe04
2 changed files with 30 additions and 52 deletions

View File

@@ -44,7 +44,6 @@ use Espo\Core\Binding\BindingData;
use Espo\Core\InjectableFactory;
use Espo\Core\Select\SelectManager;
use Espo\Core\Select\SelectManagerFactory;
use Espo\Core\Utils\Metadata;
use Espo\Entities\User;
use RuntimeException;
@@ -78,21 +77,12 @@ class Factory
public function __construct(
private InjectableFactory $injectableFactory,
private Metadata $metadata,
private SelectManagerFactory $selectManagerFactory
) {}
private function create(string $entityType, User $user, string $type): object
{
/** @var class-string $className */
$className = $this->metadata->get(
[
'selectDefs',
$entityType,
'applierClassNameMap',
$type,
]
) ?? $this->getDefaultClassName($type);
$className = $this->getDefaultClassName($type);
// SelectManager is used for backward compatibility.
$selectManager = $this->selectManagerFactory->create($entityType, $user);

View File

@@ -29,36 +29,31 @@
namespace tests\unit\Espo\Core\Select\Applier;
use Espo\Core\{
Select\Applier\Factory as ApplierFactory,
Select\SelectManagerFactory,
Select\SelectManager,
Select\Where\Applier as WhereApplier,
Select\Select\Applier as SelectApplier,
Select\Order\Applier as OrderApplier,
Select\Applier\Appliers\Limit as LimitApplier,
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,
Binding\BindingContainer,
Binding\Binder,
Binding\BindingData,
};
use Espo\Core\Binding\Binder;
use Espo\Core\Binding\BindingContainer;
use Espo\Core\Binding\BindingData;
use Espo\Core\InjectableFactory;
use Espo\Core\Select\AccessControl\Applier as AccessControlFilterApplier;
use Espo\Core\Select\Applier\Appliers\Additional as AdditionalApplier;
use Espo\Core\Select\Applier\Appliers\Limit as LimitApplier;
use Espo\Core\Select\Applier\Factory as ApplierFactory;
use Espo\Core\Select\Bool\Applier as BoolFilterListApplier;
use Espo\Core\Select\Order\Applier as OrderApplier;
use Espo\Core\Select\Primary\Applier as PrimaryFilterApplier;
use Espo\Core\Select\Select\Applier as SelectApplier;
use Espo\Core\Select\SelectManager;
use Espo\Core\Select\SelectManagerFactory;
use Espo\Core\Select\Text\Applier as TextFilterApplier;
use Espo\Core\Select\Where\Applier as WhereApplier;
use Espo\{
Entities\User,
};
use Espo\Entities\User;
class FactoryTest extends \PHPUnit\Framework\TestCase
{
protected function setUp(): void
{
$this->injectableFactory = $this->createMock(InjectableFactory::class);
$this->metadata = $this->createMock(Metadata::class);
$this->selectManagerFactory = $this->createMock(SelectManagerFactory::class);
$this->selectManagerFactory = $this->createMock(SelectManagerFactory::class);
$this->user = $this->createMock(User::class);
@@ -66,60 +61,59 @@ class FactoryTest extends \PHPUnit\Framework\TestCase
$this->factory = new ApplierFactory(
$this->injectableFactory,
$this->metadata,
$this->selectManagerFactory
);
}
public function testCreate1()
{
$this->prepareFactoryTest(null, SelectApplier::class, ApplierFactory::SELECT, 'createSelect');
$this->prepareFactoryTest(SelectApplier::class, ApplierFactory::SELECT, 'createSelect');
}
public function testCreate2()
{
$this->prepareFactoryTest(
'SomeClass', BoolFilterListApplier::class, ApplierFactory::BOOL_FILTER_LIST, 'createBoolFilterList');
BoolFilterListApplier::class, ApplierFactory::BOOL_FILTER_LIST, 'createBoolFilterList');
}
public function testCreate3()
{
$this->prepareFactoryTest(null, TextFilterApplier::class, ApplierFactory::TEXT_FILTER, 'createTextFilter');
$this->prepareFactoryTest(TextFilterApplier::class, ApplierFactory::TEXT_FILTER, 'createTextFilter');
}
public function testCreate4()
{
$this->prepareFactoryTest(null, WhereApplier::class, ApplierFactory::WHERE, 'createWhere');
$this->prepareFactoryTest(WhereApplier::class, ApplierFactory::WHERE, 'createWhere');
}
public function testCreate5()
{
$this->prepareFactoryTest(null, OrderApplier::class, ApplierFactory::ORDER, 'createOrder');
$this->prepareFactoryTest(OrderApplier::class, ApplierFactory::ORDER, 'createOrder');
}
public function testCreate6()
{
$this->prepareFactoryTest(null, LimitApplier::class, ApplierFactory::LIMIT, 'createLimit');
$this->prepareFactoryTest(LimitApplier::class, ApplierFactory::LIMIT, 'createLimit');
}
public function testCreate7()
{
$this->prepareFactoryTest(null, AdditionalApplier::class, ApplierFactory::ADDITIONAL, 'createAdditional');
$this->prepareFactoryTest(AdditionalApplier::class, ApplierFactory::ADDITIONAL, 'createAdditional');
}
public function testCreate8()
{
$this->prepareFactoryTest(
null, PrimaryFilterApplier::class, ApplierFactory::PRIMARY_FILTER, 'createPrimaryFilter');
PrimaryFilterApplier::class, ApplierFactory::PRIMARY_FILTER, 'createPrimaryFilter');
}
public function testCreate9()
{
$this->prepareFactoryTest
(null, AccessControlFilterApplier::class, ApplierFactory::ACCESS_CONTROL_FILTER, 'createAccessControlFilter');
$this->prepareFactoryTest(
AccessControlFilterApplier::class, ApplierFactory::ACCESS_CONTROL_FILTER, 'createAccessControlFilter');
}
protected function prepareFactoryTest(?string $className, string $defaultClassName, string $type, string $method)
protected function prepareFactoryTest(string $defaultClassName, string $type, string $method)
{
$entityType = 'Test';
@@ -129,12 +123,6 @@ class FactoryTest extends \PHPUnit\Framework\TestCase
->with('Test', $this->user)
->willReturn($this->selectManager);
$this->metadata
->expects($this->once())
->method('get')
->with(['selectDefs', $entityType, 'applierClassNameMap', $type])
->willReturn($className);
$applierClassName = $className ?? $defaultClassName;
$applier = $this->createMock($defaultClassName);