LimitedAccessSubQuery   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 12
dl 0
loc 27
rs 10
c 1
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\Traits;
6
7
use Application\Model\User;
8
use Application\Repository\UserRepository;
9
use Doctrine\ORM\EntityManager;
10
11
/**
12
 * Trait to test limited access sub queries.
13
 */
14
trait LimitedAccessSubQuery
15
{
16
    abstract public function getEntityManager(): EntityManager;
17
18
    /**
19
     * @dataProvider providerGetAccessibleSubQuery
20
     */
21
    public function testGetAccessibleSubQuery(?string $login, array $expected): void
22
    {
23
        /** @var UserRepository $userRepository */
24
        $userRepository = $this->getEntityManager()->getRepository(User::class);
25
        $user = $userRepository->getOneByEmail($login . '@example.com');
26
        $subQuery = $this->repository->getAccessibleSubQuery($user);
27
28
        if (!$subQuery) {
29
            $subQuery = $this->repository->getAllIdsQuery();
30
        }
31
32
        if ($subQuery === '-1') {
33
            $ids = [];
34
        } else {
35
            $ids = $this->getEntityManager()->getConnection()->executeQuery($subQuery)->fetchFirstColumn();
36
        }
37
38
        sort($ids);
39
40
        self::assertEquals($expected, $ids);
41
    }
42
}
43