CurrentOrganizationExtensionTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Unit\Doctrine\Organization;
  4. use App\Doctrine\Organization\CurrentOrganizationExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Organization\Organization;
  7. use App\Tests\Unit\Doctrine\ExtensionTestCase;
  8. class CurrentOrganizationExtensionTest extends ExtensionTestCase
  9. {
  10. private $extension;
  11. protected function setUp(): void
  12. {
  13. parent::setUp();
  14. $this->extension = new CurrentOrganizationExtension($this->security);
  15. }
  16. public function testSupportsReturnsTrueForOrganizationClass()
  17. {
  18. $this->assertTrue($this->extension->supports(Organization::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->user->method('getOrganization')->willReturn($this->organization);
  30. $this->organization->method('getId')->willReturn(1);
  31. $this->security->method('getUser')->willReturn($this->user);
  32. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  33. $this->queryBuilder->expects($this->once())
  34. ->method('andWhere')
  35. ->with('o.id = :organization')
  36. ->willReturn($this->queryBuilder);
  37. $this->queryBuilder->expects($this->once())
  38. ->method('setParameter')
  39. ->with('organization', 1)
  40. ->willReturn($this->queryBuilder);
  41. $this->invokeAddWhere($this->extension, $this->queryBuilder, Organization::class, null);
  42. }
  43. public function testAddWhereWithNullUser()
  44. {
  45. $this->security->method('getUser')->willReturn(null);
  46. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  47. $this->queryBuilder->expects($this->never())
  48. ->method('andWhere');
  49. $this->queryBuilder->expects($this->never())
  50. ->method('setParameter');
  51. $this->invokeAddWhere($this->extension, $this->queryBuilder, Organization::class, null);
  52. }
  53. public function testAddWhereWithNullOrganization()
  54. {
  55. $this->user->method('getOrganization')->willReturn(null);
  56. $this->security->method('getUser')->willReturn($this->user);
  57. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  58. $this->queryBuilder->expects($this->never())
  59. ->method('andWhere');
  60. $this->queryBuilder->expects($this->never())
  61. ->method('setParameter');
  62. $this->invokeAddWhere($this->extension, $this->queryBuilder, Organization::class, null);
  63. }
  64. }