CurrentCoursesExtensionTest.php 2.6 KB

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