52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests\Repository;
|
|
|
|
use App\Entity\Upload;
|
|
use App\Repository\UploadRepository;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Doctrine\ORM\QueryBuilder;
|
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
|
|
|
/**
|
|
* The document picker decides which files an administrative setting may point at, so the type
|
|
* restriction is pinned here: unrestricted it offers every upload in the system, which would let
|
|
* a setting reference a teamer's Honorarvertrag or Beleg.
|
|
*/
|
|
class UploadRepositoryTest extends KernelTestCase
|
|
{
|
|
public function testTheAutocompleteOnlyOffersTheGlobalLibrary(): void
|
|
{
|
|
$qb = $this->createAutocompletionQueryBuilder();
|
|
|
|
$this->assertStringContainsString('upload.type = :type', $qb->getDQL());
|
|
$this->assertSame(
|
|
Upload::TYPE_DOCUMENT,
|
|
$qb->getQuery()->getParameter('type')->getValue()
|
|
);
|
|
}
|
|
|
|
public function testTheAutocompleteStillSearchesBothNames(): void
|
|
{
|
|
$dql = $this->createAutocompletionQueryBuilder()->getDQL();
|
|
|
|
$this->assertStringContainsString('upload.originalFilename LIKE :filename', $dql);
|
|
$this->assertStringContainsString('upload.displayName LIKE :filename', $dql);
|
|
}
|
|
|
|
private function createAutocompletionQueryBuilder(): QueryBuilder
|
|
{
|
|
/** @var EntityManagerInterface $entityManager */
|
|
$entityManager = static::getContainer()->get(EntityManagerInterface::class);
|
|
|
|
/** @var UploadRepository $repository */
|
|
$repository = $entityManager->getRepository(Upload::class);
|
|
|
|
$reflection = new \ReflectionMethod($repository, 'createAutocompletionQueryBuilder');
|
|
|
|
return $reflection->invoke($repository, '');
|
|
}
|
|
}
|