CurrentCoursesExtensionTest.php 2.8 KB

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