CurrentCoursesExtensionTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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(2))
  30. ->method('andWhere')
  31. ->willReturnMap([
  32. ['a.discr = :discr', $this->queryBuilder],
  33. ['a.organization = :organization', $this->queryBuilder],
  34. ]);
  35. $this->queryBuilder
  36. ->expects(self::exactly(2))
  37. ->method('setParameter')
  38. ->willReturnMap([
  39. ['discr', 'course', null, $this->queryBuilder],
  40. ['organization', $this->organization, null, $this->queryBuilder],
  41. ]);
  42. $this->invokeAddWhere($this->extension, $this->queryBuilder, Course::class, null);
  43. }
  44. public function testAddWhereMissingUser(): void
  45. {
  46. $this->security->method('getUser')->willReturn(null);
  47. $this->user->expects(self::never())->method('getOrganization');
  48. $this->queryBuilder->expects(self::never())->method('getRootAliases');
  49. $this->queryBuilder->expects(self::never())->method('andWhere');
  50. $this->queryBuilder->expects(self::never())->method('setParameter');
  51. $this->invokeAddWhere($this->extension, $this->queryBuilder, Course::class, null);
  52. }
  53. public function testAddWhereMissingOrganization(): void
  54. {
  55. $this->security->method('getUser')->willReturn($this->user);
  56. $this->user->expects(self::once())->method('getOrganization')->willReturn(null);
  57. $this->queryBuilder->expects(self::never())->method('getRootAliases');
  58. $this->queryBuilder->expects(self::never())->method('andWhere');
  59. $this->queryBuilder->expects(self::never())->method('setParameter');
  60. $this->invokeAddWhere($this->extension, $this->queryBuilder, Course::class, null);
  61. }
  62. }