AttendanceBookingReasonExtensionTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Tests\Unit\Doctrine\Booking;
  4. use App\Doctrine\Booking\AttendanceBookingReasonExtension;
  5. use App\Entity\Booking\AttendanceBookingReason;
  6. use App\Tests\Unit\Doctrine\ExtensionTestCase;
  7. class AttendanceBookingReasonExtensionTest extends ExtensionTestCase
  8. {
  9. private AttendanceBookingReasonExtension $extension;
  10. protected function setUp(): void
  11. {
  12. parent::setUp();
  13. $this->extension = new AttendanceBookingReasonExtension($this->security);
  14. }
  15. public function testSupportsReturnsTrueForAttendanceBookingReasonClass(): void
  16. {
  17. $this->assertTrue($this->extension->supports(AttendanceBookingReason::class, null));
  18. }
  19. public function testSupportsReturnsFalseForOtherClasses(): void
  20. {
  21. $this->assertFalse($this->extension->supports('OtherClass', null));
  22. }
  23. public function testAddWhere(): void
  24. {
  25. $this->user->method('getOrganization')->willReturn($this->organization);
  26. $this->security->method('getUser')->willReturn($this->user);
  27. $this->queryBuilder->method('getRootAliases')->willReturn(['a']);
  28. $this->queryBuilder->expects($this->once())
  29. ->method('andWhere')
  30. ->with('a.organization = :organization')
  31. ->willReturn($this->queryBuilder);
  32. $this->queryBuilder->expects($this->once())
  33. ->method('setParameter')
  34. ->with('organization', $this->organization)
  35. ->willReturn($this->queryBuilder);
  36. $this->invokeAddWhere($this->extension, $this->queryBuilder, AttendanceBookingReason::class, null);
  37. }
  38. public function testAddWhereMissingUser(): void
  39. {
  40. $this->security->method('getUser')->willReturn(null);
  41. $this->user->expects(self::never())->method('getOrganization');
  42. $this->queryBuilder->expects(self::never())->method('getRootAliases')->willReturn(['a']);
  43. $this->queryBuilder->expects(self::never())->method('andWhere');
  44. $this->queryBuilder->expects(self::never())->method('setParameter');
  45. $this->invokeAddWhere($this->extension, $this->queryBuilder, AttendanceBookingReason::class, null);
  46. }
  47. public function testAddWhereMissingOrganization(): void
  48. {
  49. $this->security->method('getUser')->willReturn($this->user);
  50. $this->user->expects(self::once())->method('getOrganization')->willReturn(null);
  51. $this->queryBuilder->expects(self::never())->method('getRootAliases')->willReturn(['a']);
  52. $this->queryBuilder->expects(self::never())->method('andWhere');
  53. $this->queryBuilder->expects(self::never())->method('setParameter');
  54. $this->invokeAddWhere($this->extension, $this->queryBuilder, AttendanceBookingReason::class, null);
  55. }
  56. }