CurrentParentOrganizationExtensionTest.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Doctrine\Organization;
  4. use App\Doctrine\Organization\CurrentParentOrganizationExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Organization\Organization;
  7. use App\Entity\Organization\OrganizationAddressPostal;
  8. use App\Entity\Organization\OrganizationArticle;
  9. use App\Entity\Organization\Subdomain;
  10. use App\Tests\Unit\Doctrine\ExtensionTestCase;
  11. class CurrentParentOrganizationExtensionTest extends ExtensionTestCase
  12. {
  13. private $extension;
  14. protected function setUp(): void
  15. {
  16. parent::setUp();
  17. $this->extension = new CurrentParentOrganizationExtension($this->security);
  18. }
  19. public function testSupportsReturnsTrueForSupportedClasses()
  20. {
  21. $supportedClasses = [OrganizationAddressPostal::class, OrganizationArticle::class, Subdomain::class];
  22. foreach ($supportedClasses as $class) {
  23. $this->assertTrue($this->extension->supports($class, null));
  24. }
  25. }
  26. public function testSupportsReturnsFalseForOtherClasses()
  27. {
  28. $classes = ['OtherClass', Access::class, Organization::class];
  29. foreach ($classes as $class) {
  30. $this->assertFalse($this->extension->supports($class, null));
  31. }
  32. }
  33. public function testAddWhere()
  34. {
  35. $this->user->method('getOrganization')->willReturn($this->organization);
  36. $this->organization->method('getId')->willReturn(1);
  37. $this->security->method('getUser')->willReturn($this->user);
  38. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  39. $this->queryBuilder->expects($this->once())
  40. ->method('andWhere')
  41. ->with('o.organization = :organization')
  42. ->willReturn($this->queryBuilder);
  43. $this->queryBuilder->expects($this->once())
  44. ->method('setParameter')
  45. ->with('organization', 1)
  46. ->willReturn($this->queryBuilder);
  47. $this->invokeAddWhere($this->extension, $this->queryBuilder, OrganizationAddressPostal::class, null);
  48. }
  49. public function testAddWhereWithNullUser()
  50. {
  51. $this->security->method('getUser')->willReturn(null);
  52. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  53. $this->queryBuilder->expects($this->never())
  54. ->method('andWhere');
  55. $this->queryBuilder->expects($this->never())
  56. ->method('setParameter');
  57. $this->invokeAddWhere($this->extension, $this->queryBuilder, OrganizationAddressPostal::class, null);
  58. }
  59. public function testAddWhereWithNullOrganization()
  60. {
  61. $this->user->method('getOrganization')->willReturn(null);
  62. $this->security->method('getUser')->willReturn($this->user);
  63. $this->queryBuilder->method('getRootAliases')->willReturn(['o']);
  64. $this->queryBuilder->expects($this->never())
  65. ->method('andWhere');
  66. $this->queryBuilder->expects($this->never())
  67. ->method('setParameter');
  68. $this->invokeAddWhere($this->extension, $this->queryBuilder, OrganizationAddressPostal::class, null);
  69. }
  70. }