CurrentUserNotificationUserExtensionTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Doctrine\Core;
  4. use App\Doctrine\Core\CurrentUserNotificationUserExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Core\NotificationUser;
  7. use App\Tests\Unit\Doctrine\ExtensionTestCase;
  8. class CurrentUserNotificationUserExtensionTest extends ExtensionTestCase
  9. {
  10. private $extension;
  11. protected function setUp(): void
  12. {
  13. parent::setUp();
  14. $this->extension = new CurrentUserNotificationUserExtension($this->security);
  15. }
  16. public function testSupportsReturnsTrueForNotificationUserClass()
  17. {
  18. $this->assertTrue($this->extension->supports(NotificationUser::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->once())
  32. ->method('andWhere')
  33. ->with('o.access = :current_access')
  34. ->willReturn($this->queryBuilder);
  35. $this->queryBuilder->expects($this->once())
  36. ->method('setParameter')
  37. ->with('current_access', $this->user)
  38. ->willReturn($this->queryBuilder);
  39. $this->invokeAddWhere($this->extension, $this->queryBuilder, NotificationUser::class, null);
  40. }
  41. public function testAddWhereWithNullUser()
  42. {
  43. $this->security->method('getUser')->willReturn(null);
  44. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  45. $this->queryBuilder->expects($this->never())
  46. ->method('andWhere');
  47. $this->queryBuilder->expects($this->never())
  48. ->method('setParameter');
  49. $this->invokeAddWhere($this->extension, $this->queryBuilder, NotificationUser::class, null);
  50. }
  51. }