CurrentUserNotificationExtensionTest.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Doctrine\Core;
  4. use App\Doctrine\Core\CurrentUserNotificationExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Core\Notification;
  7. use App\Tests\Unit\DoctrineExtension\AbstractExtensionTest;
  8. class CurrentUserNotificationExtensionTest extends AbstractExtensionTest
  9. {
  10. private $extension;
  11. protected function setUp(): void
  12. {
  13. parent::setUp();
  14. $this->extension = new CurrentUserNotificationExtension($this->security);
  15. }
  16. public function testSupportsReturnsTrueForNotificationClass()
  17. {
  18. $this->assertTrue($this->extension->supports(Notification::class, null));
  19. }
  20. public function testSupportsReturnsFalseForOtherClasses()
  21. {
  22. $classes = ['OtherClass', Access::class];
  23. foreach ($classes as $class) {
  24. $this->assertFalse($this->extension->supports($class, null));
  25. }
  26. }
  27. public function testAddWhere()
  28. {
  29. $this->security->method('getUser')->willReturn($this->user);
  30. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  31. $this->queryBuilder->expects($this->exactly(2))
  32. ->method('andWhere')
  33. ->withConsecutive(
  34. ['o.recipientAccess = :current_access'],
  35. ['o.availabilityDate IS NULL or o.availabilityDate <= :today']
  36. )
  37. ->willReturn($this->queryBuilder);
  38. $this->queryBuilder->expects($this->exactly(2))
  39. ->method('setParameter')
  40. ->withConsecutive(
  41. ['current_access', $this->user],
  42. ['today', $this->isInstanceOf(\DateTime::class)]
  43. )
  44. ->willReturn($this->queryBuilder);
  45. // Exécuter la méthode
  46. $this->invokeAddWhere($this->extension, $this->queryBuilder, Notification::class, null);
  47. }
  48. public function testAddWhereWithNullUser()
  49. {
  50. $this->security->method('getUser')->willReturn(null);
  51. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  52. $this->queryBuilder->expects($this->never())
  53. ->method('andWhere');
  54. $this->queryBuilder->expects($this->never())
  55. ->method('setParameter');
  56. $this->invokeAddWhere($this->extension, $this->queryBuilder, Notification::class, null);
  57. }
  58. }