Vincent GUFFON 3 years ago
parent
commit
2389a194cd

+ 2 - 2
tests/Service/Utils/DateTimeConstraintTest.php → tests/Service/Constraint/DateTimeConstraintTest.php

@@ -1,10 +1,10 @@
 <?php
-namespace App\Tests\Service\Utils;
+namespace App\Tests\Service\Constraint;
 
 use App\Entity\Access\Access;
 use App\Entity\Organization\Organization;
 use App\Entity\Organization\Parameters;
-use App\Service\Utils\DateTimeConstraint;
+use App\Service\Constraint\DateTimeConstraint;
 use App\Tests\TestToolsTrait;
 use Doctrine\ORM\EntityManagerInterface;
 use PHPUnit\Framework\TestCase;

+ 2 - 0
tests/Service/Organization/OnOrganizationChangeTest.php

@@ -5,7 +5,9 @@ use App\Entity\Billing\BillingSetting;
 use App\Entity\Organization\Organization;
 use App\Entity\Organization\Parameters;
 use App\Enum\Organization\LegalEnum;
+use App\Repository\Booking\CourseRepository;
 use App\Service\Organization\OnOrganizationChange;
+use App\Service\Security\Module;
 use PHPUnit\Framework\TestCase;
 
 class OnOrganizationChangeTest extends TestCase

+ 32 - 1
tests/Service/Organization/OnParametersChangeTest.php

@@ -2,11 +2,13 @@
 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;
 
@@ -14,11 +16,13 @@ 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->onParametersChange = new OnParametersChange($this->courseRepositoryMock);
     }
 
     /**
@@ -58,4 +62,31 @@ class OnParametersChangeTest extends TestCase
         $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());
+    }
 }

+ 25 - 0
tests/Service/Organization/UtilsTest.php

@@ -105,4 +105,29 @@ class UtilsTest extends TestCase
         else
             $this->assertEquals($today->format('Y'), Utils::getOrganizationCurrentActivityYear($this->organization));
     }
+
+    /**
+     * @see OrganizationUtils::getActivityPeriodsSwitchYear()
+     */
+    public function testGetActivityPeriodsSwitchYear(){
+        $parameters = new Parameters();
+        $parameters->setMusicalDate(new \DateTime('2020-09-05'));
+        $this->organization->setParameters($parameters);
+        $periods = Utils::getActivityPeriodsSwitchYear($this->organization, 2022);
+
+        $this->assertEquals('2022-09-05', $periods['dateStart']);
+        $this->assertEquals('2023-09-04', $periods['dateEnd']);
+    }
+
+    /**
+     * @see OrganizationUtils::getActivityYearSwitchDate()
+     */
+    public function testgetActivityYearSwitchDate(){
+        $parameters = new Parameters();
+        $parameters->setMusicalDate(new \DateTime('2020-09-05'));
+        $this->organization->setParameters($parameters);
+
+        $this->assertEquals(2022, Utils::getActivityYearSwitchDate($this->organization, new \DateTime('2022-09-10')));
+        $this->assertEquals(2021, Utils::getActivityYearSwitchDate($this->organization, new \DateTime('2022-09-02')));
+    }
 }