AllowedAddressPostalExtensionTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Unit\Doctrine\Core;
  4. use App\Doctrine\Core\AllowedAddressPostalExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Core\AddressPostal;
  7. use App\Tests\Unit\Doctrine\ExtensionTestCase;
  8. use Symfony\Component\Security\Core\User\UserInterface;
  9. class AllowedAddressPostalExtensionTest extends ExtensionTestCase
  10. {
  11. private AllowedAddressPostalExtension $extension;
  12. protected function setUp(): void
  13. {
  14. parent::setUp();
  15. $this->extension = new AllowedAddressPostalExtension($this->security);
  16. }
  17. public function testSupportsReturnsTrueForAddressPostalClass(): void
  18. {
  19. $this->assertTrue($this->extension->supports(AddressPostal::class, null));
  20. }
  21. public function testSupportsReturnsFalseForOtherClasses(): void
  22. {
  23. $classes = ['OtherClass', UserInterface::class, Access::class];
  24. foreach ($classes as $class) {
  25. $this->assertFalse($this->extension->supports($class, null));
  26. }
  27. }
  28. public function testAddWhere(): void
  29. {
  30. $this->user->method('getOrganization')->willReturn($this->organization);
  31. $this->security->method('getUser')->willReturn($this->user);
  32. $this->queryBuilder->method('getRootAliases')->willReturn(['a']);
  33. $this->queryBuilder->expects($this->once())
  34. ->method('innerJoin')
  35. ->with('a.organizationAddressPostal', 'organization_address_postal')
  36. ->willReturn($this->queryBuilder);
  37. $this->queryBuilder->expects($this->once())
  38. ->method('andWhere')
  39. ->with('organization_address_postal.organization = :organization')
  40. ->willReturn($this->queryBuilder);
  41. $this->queryBuilder->expects($this->once())
  42. ->method('setParameter')
  43. ->with('organization', $this->organization)
  44. ->willReturn($this->queryBuilder);
  45. $this->invokeAddWhere($this->extension, $this->queryBuilder, AddressPostal::class, null);
  46. }
  47. public function testAddWhereWithNullUser(): void
  48. {
  49. $this->security->method('getUser')->willReturn(null);
  50. $this->queryBuilder->method('getRootAliases')->willReturn(['a']);
  51. $this->queryBuilder->expects($this->never())
  52. ->method('innerJoin');
  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, AddressPostal::class, null);
  58. }
  59. public function testAddWhereWithNullOrganization(): void
  60. {
  61. $this->user->method('getOrganization')->willReturn(null);
  62. $this->security->method('getUser')->willReturn($this->user);
  63. $this->queryBuilder->method('getRootAliases')->willReturn(['a']);
  64. $this->queryBuilder->expects($this->never())
  65. ->method('innerJoin');
  66. $this->queryBuilder->expects($this->never())
  67. ->method('andWhere');
  68. $this->queryBuilder->expects($this->never())
  69. ->method('setParameter');
  70. $this->invokeAddWhere($this->extension, $this->queryBuilder, AddressPostal::class, null);
  71. }
  72. public function testAddWhereWithNoRootAlias(): void
  73. {
  74. $this->user->method('getOrganization')->willReturn($this->organization);
  75. $this->security->method('getUser')->willReturn($this->user);
  76. $this->queryBuilder->method('getRootAliases')->willReturn([]);
  77. $this->expectException(\LogicException::class);
  78. $this->expectExceptionMessage('No root alias defined.');
  79. $this->invokeAddWhere($this->extension, $this->queryBuilder, AddressPostal::class, null);
  80. }
  81. }