| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Test\Service\Organization;
- use App\Entity\Access\Access;
- use App\Entity\Booking\Course;
- use App\Entity\Education\EducationCurriculum;
- use App\Entity\Education\EducationNotationConfig;
- use App\Entity\Organization\Organization;
- use App\Entity\Organization\Parameters;
- use App\Enum\Education\AdvancedEducationNotationTypeEnum;
- use App\Repository\Booking\CourseRepository;
- use App\Service\Organization\OnParametersChange;
- use PHPUnit\Framework\TestCase;
- class OnParametersChangeTest extends TestCase
- {
- private Parameters $parameters;
- private OnParametersChange $onParametersChange;
- private CourseRepository $courseRepositoryMock;
- public function setUp():void
- {
- $this->courseRepositoryMock = $this->getMockBuilder(CourseRepository::class)->disableOriginalConstructor()->getMock();
- $this->parameters = new Parameters();
- $this->onParametersChange = new OnParametersChange($this->courseRepositoryMock);
- }
- /**
- * @see OnParametersChange::onAdvancedEducationNotationType()
- */
- public function testOnAdvancedEducationNotationTypeByTeachers(){
- $educationNotationConfig = new EducationNotationConfig();
- $educationCurriculum = new EducationCurriculum();
- $educationNotationConfig->addEducationCurriculum($educationCurriculum);
- $organization = new Organization();
- $organization->addEducationNotationConfig($educationNotationConfig);
- $this->parameters->setAdvancedEducationNotationType(AdvancedEducationNotationTypeEnum::BY_TEACHER()->getValue());
- $this->parameters->setOrganization($organization);
- $this->assertCount(1, $educationNotationConfig->getEducationCurriculums());
- $this->onParametersChange->onAdvancedEducationNotationType($this->parameters);
- $this->assertNull($educationNotationConfig->getEducationCurriculums()->first()->getEducationNotationConfig());
- }
- /**
- * @see OnParametersChange::onAdvancedEducationNotationType()
- */
- public function testOnAdvancedEducationNotationTypeByEducation(){
- $educationNotationConfig = new EducationNotationConfig();
- $teacher = new Access();
- $educationNotationConfig->addTeacher($teacher);
- $organization = new Organization();
- $organization->addEducationNotationConfig($educationNotationConfig);
- $this->parameters->setAdvancedEducationNotationType(AdvancedEducationNotationTypeEnum::BY_EDUCATION()->getValue());
- $this->parameters->setOrganization($organization);
- $this->assertCount(1, $educationNotationConfig->getTeachers());
- $this->onParametersChange->onAdvancedEducationNotationType($this->parameters);
- $this->assertNull($educationNotationConfig->getTeachers()->first()->getEducationNotationConfig());
- }
- /**
- * Un cours qui débute le 2/09/2022, si l'année musical passe du 05/09 au 01/09 alors le cours passe de l'année 2021/2022 à 2022/2023
- * @throws \Exception
- * @see OnParametersChange::onMusicalDate()
- */
- public function testOnMusicalDate(){
- $organization = new Organization();
- $this->parameters->setMusicalDate(new \DateTime('2022-09-01'));
- $organization->setParameters($this->parameters);
- $course = new Course();
- $course->setStartYear(2021);
- $course->setEndYear(2022);
- $course->setDatetimeStart(new \DateTime('2022-09-02'));
- $this->courseRepositoryMock
- ->method('getCoursesToFrom')
- ->willReturn([$course])
- ;
- $this->onParametersChange->onMusicalDate($organization, new \DateTime('2022-09-05'));
- $this->assertEquals(2022, $course->getStartYear());
- $this->assertEquals(2023, $course->getEndYear());
- }
- }
|