TestWithEntityManager   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 2
eloc 17
c 4
b 0
f 0
dl 0
loc 32
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 20 1
A tearDown() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EcodevTests\Felix\Traits;
6
7
use Doctrine\DBAL\DriverManager;
8
use Doctrine\ORM\EntityManager;
9
use Doctrine\ORM\Mapping\UnderscoreNamingStrategy;
10
use Doctrine\ORM\ORMSetup;
11
use Ecodev\Felix\ORM\Query\Filter\AclFilter;
12
use Ecodev\Felix\ORM\Query\NativeIn;
13
use Laminas\ServiceManager\ServiceManager;
14
15
/**
16
 * Trait to easily set up a dummy entity manager.
17
 */
18
trait TestWithEntityManager
19
{
20
    private EntityManager $entityManager;
21
22
    public function setUp(): void
23
    {
24
        // Create the entity manager
25
        $config = ORMSetup::createAttributeMetadataConfiguration([__DIR__ . '/Blog/Model'], true);
26
        $config->addCustomNumericFunction('native_in', NativeIn::class);
27
        $config->setNamingStrategy(new UnderscoreNamingStrategy(CASE_LOWER));
28
        $config->addFilter(AclFilter::class, AclFilter::class);
29
30
        $connection = DriverManager::getConnection([
31
            'wrapperClass' => MariaDbQuotingConnection::class,
32
            'driver' => 'sqlite3',
33
            'memory' => true,
34
        ]);
35
36
        $this->entityManager = new EntityManager($connection, $config);
37
38
        global $container;
39
        $container = new ServiceManager([
40
            'factories' => [
41
                EntityManager::class => fn () => $this->entityManager,
42
            ],
43
        ]);
44
    }
45
46
    public function tearDown(): void
47
    {
48
        global $container;
49
        $container = null;
50
    }
51
}
52