mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-20 22:53:49 +00:00
[person][Search] Feature: use the current center history when searching
for person
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Chill\PersonBundle\Tests\Repository;
|
||||
|
||||
use Chill\MainBundle\Entity\User;
|
||||
use Chill\MainBundle\Repository\CenterRepositoryInterface;
|
||||
use Chill\MainBundle\Repository\CountryRepository;
|
||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
||||
use Chill\PersonBundle\Entity\Person;
|
||||
use Chill\PersonBundle\Repository\PersonACLAwareRepository;
|
||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Prophecy\Argument;
|
||||
use Prophecy\PhpUnit\ProphecyTrait;
|
||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||
use Symfony\Component\Security\Core\Security;
|
||||
|
||||
class PersonACLAwareRepositoryTest extends KernelTestCase
|
||||
{
|
||||
use ProphecyTrait;
|
||||
|
||||
private EntityManagerInterface $entityManager;
|
||||
|
||||
private CountryRepository $countryRepository;
|
||||
|
||||
private CenterRepositoryInterface $centerRepository;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
self::bootKernel();
|
||||
|
||||
$this->entityManager = self::$container->get(EntityManagerInterface::class);
|
||||
$this->countryRepository = self::$container->get(CountryRepository::class);
|
||||
$this->centerRepository = self::$container->get(CenterRepositoryInterface::class);
|
||||
|
||||
}
|
||||
|
||||
public function testCountByCriteria()
|
||||
{
|
||||
$user = new User();
|
||||
|
||||
$authorizationHelper = $this->prophesize(AuthorizationHelperInterface::class);
|
||||
$authorizationHelper->getReachableCenters(Argument::exact($user), Argument::exact(PersonVoter::SEE))
|
||||
->willReturn($this->centerRepository->findAll());
|
||||
|
||||
$security = $this->prophesize(Security::class);
|
||||
$security->getUser()->willReturn($user);
|
||||
|
||||
$repository = new PersonACLAwareRepository($security->reveal(), $this->entityManager, $this->countryRepository,
|
||||
$authorizationHelper->reveal());
|
||||
|
||||
$number = $repository->countBySearchCriteria('diallo');
|
||||
|
||||
$this->assertGreaterThan(0, $number);
|
||||
}
|
||||
|
||||
public function testFindByCriteria()
|
||||
{
|
||||
$user = new User();
|
||||
|
||||
$authorizationHelper = $this->prophesize(AuthorizationHelperInterface::class);
|
||||
$authorizationHelper->getReachableCenters(Argument::exact($user), Argument::exact(PersonVoter::SEE))
|
||||
->willReturn($this->centerRepository->findAll());
|
||||
|
||||
$security = $this->prophesize(Security::class);
|
||||
$security->getUser()->willReturn($user);
|
||||
|
||||
$repository = new PersonACLAwareRepository($security->reveal(), $this->entityManager, $this->countryRepository,
|
||||
$authorizationHelper->reveal());
|
||||
|
||||
$results = $repository->findBySearchCriteria(0, 5, false, 'diallo');
|
||||
|
||||
$this->assertGreaterThan(0, count($results));
|
||||
$this->assertContainsOnlyInstancesOf(Person::class, $results);
|
||||
foreach ($results as $person) {
|
||||
$this->assertStringContainsString('diallo', strtolower($person->getFirstName() . ' ' . $person->getLastName()));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user