LimitedAccessSubQuery   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 12
dl 0
loc 27
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A testGetAccessibleSubQuery() 0 20 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApplicationTest\Repository\Traits;
6
7
use Application\Enum\Site;
8
use Application\Model\User;
9
use Application\Repository\UserRepository;
10
use Doctrine\ORM\EntityManager;
11
12
/**
13
 * Trait to test limited access sub queries.
14
 */
15
trait LimitedAccessSubQuery
16
{
17
    abstract public function getEntityManager(): EntityManager;
18
19
    /**
20
     * @dataProvider providerGetAccessibleSubQuery
21
     */
22
    public function testGetAccessibleSubQuery(?string $login, array $expected): void
23
    {
24
        /** @var UserRepository $userRepository */
25
        $userRepository = $this->getEntityManager()->getRepository(User::class);
26
        $user = $userRepository->getOneByLogin($login, Site::Dilps);
27
        $subQuery = $this->repository->getAccessibleSubQuery($user);
28
29
        if (!$subQuery) {
30
            $subQuery = $this->repository->getAllIdsQuery();
31
        }
32
33
        if ($subQuery === '-1') {
34
            $ids = [];
35
        } else {
36
            $ids = $this->getEntityManager()->getConnection()->executeQuery($subQuery)->fetchFirstColumn();
37
        }
38
39
        sort($ids);
40
41
        self::assertEquals($expected, $ids);
42
    }
43
}
44