AllowedAddressPostalExtensionTest.php 3.5 KB

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