瀏覽代碼

tests for OnSubdomainChange - make Organization/Utils methods non-static

Olivier Massot 3 年之前
父節點
當前提交
c7f2e7ef4d

+ 2 - 2
src/Entity/Traits/ActivityYearTrait.php

@@ -19,7 +19,7 @@ trait ActivityYearTrait
     }
 
     public function setStartYear(?int $startYear = null):self {
-        if($startYear == null) $startYear = date('Y');
+        if($startYear == null) $startYear = intval(date('Y'));
         $this->startYear = $startYear;
         return $this;
     }
@@ -32,4 +32,4 @@ trait ActivityYearTrait
         $this->endYear = $endYear;
         return $this;
     }
-}
+}

+ 4 - 3
src/Service/Constraint/ActivityYearConstraint.php

@@ -15,6 +15,7 @@ class ActivityYearConstraint extends AbstractTimeConstraintUtils
 {
     public function __construct(
         private EntityManagerInterface $entityManager,
+        private \App\Service\Organization\Utils $organizationUtils
     )
     { }
 
@@ -56,8 +57,8 @@ class ActivityYearConstraint extends AbstractTimeConstraintUtils
     private function getRangeYear(Access $access, string $dateStart, string $dateEnd): array{
         $organization = $access->getOrganization();
         return [
-            organizationUtils::START_DATE_KEY => organizationUtils::getActivityYearSwitchDate($organization, new \DateTime($dateStart)),
-            organizationUtils::END_DATE_KEY => organizationUtils::getActivityYearSwitchDate($organization, new \DateTime($dateEnd))
+            organizationUtils::START_DATE_KEY => $this->organizationUtils->getActivityYearSwitchDate($organization, new \DateTime($dateStart)),
+            organizationUtils::END_DATE_KEY => $this->organizationUtils->getActivityYearSwitchDate($organization, new \DateTime($dateEnd))
         ];
     }
 
@@ -118,4 +119,4 @@ class ActivityYearConstraint extends AbstractTimeConstraintUtils
             ]
         ];
     }
-}
+}

+ 4 - 3
src/Service/Constraint/DateTimeConstraint.php

@@ -16,6 +16,7 @@ class DateTimeConstraint extends AbstractTimeConstraintUtils
 {
     public function __construct(
         private EntityManagerInterface $entityManager,
+        private \App\Service\Organization\Utils $organizationUtils
     )
     { }
 
@@ -72,9 +73,9 @@ class DateTimeConstraint extends AbstractTimeConstraintUtils
     private function getPeriods(Access $access): array{
         $organization = $access->getOrganization();
         $activityYear = $access->getActivityYear();
-        $currentActivityYear = organizationUtils::getOrganizationCurrentActivityYear($organization);
+        $currentActivityYear = $this->organizationUtils->getOrganizationCurrentActivityYear($organization);
 
-        $periods = organizationUtils::getActivityPeriodsSwitchYear($organization, $activityYear);
+        $periods = $this->organizationUtils->getActivityPeriodsSwitchYear($organization, $activityYear);
         //Si l'année courante est l'année d'affichage choisie par l'utilisateur, alors la date de début est aujourd'hui
         if($activityYear === $currentActivityYear){
             $today = new \DateTime('now');
@@ -134,4 +135,4 @@ class DateTimeConstraint extends AbstractTimeConstraintUtils
             ]
         ];
     }
-}
+}

+ 2 - 1
src/Service/OnChange/Organization/OnParametersChange.php

@@ -27,6 +27,7 @@ class OnParametersChange extends OnChangeDefault
     public function __construct(
         private CourseRepository $courseRepository,
         private \App\Service\Network\Utils $networkUtils,
+        private \App\Service\Organization\Utils $organizationUtils,
         private MessageBusInterface $messageBus
     ){ }
 
@@ -157,7 +158,7 @@ class OnParametersChange extends OnChangeDefault
 
         /** @var Course $course */
         foreach ($coursesToUpdate as $course){
-            $year = organizationUtils::getActivityYearSwitchDate($parameters->getOrganization(), $course->getDatetimeStart());
+            $year = $this->organizationUtils->getActivityYearSwitchDate($parameters->getOrganization(), $course->getDatetimeStart());
             $course->setStartYear($year);
             $course->setEndYear($year + 1);
         }

+ 10 - 14
src/Service/OnChange/Organization/OnSubdomainChange.php

@@ -54,21 +54,17 @@ class OnSubdomainChange extends OnChangeDefault
             $this->entityManager->flush();
         }
 
-        // Update the typo3 website (asynchronously with messenger)
+        // A new subdomain is active
         // /!\ This has to be executed after everything has been persisted
-        if ($context->isPutRequest() && $context->previousData()) {
-            if ($subdomain->isActive() && !$context->previousData()->isActive()) {
-                $this->messageBus->dispatch(
-                    new Typo3UpdateCommand($subdomain->getOrganization()->getId())
-                );
-            }
-        }
+        if ($subdomain->isActive() && !($context->previousData() && $context->previousData()->isActive())) {
 
-        // Envoi d'un email
-        if ($context->isPutRequest() && $context->previousData()) {
-            if ($subdomain->isActive() && !$context->previousData()->isActive()) {
-                $this->sendEmailAfterSubdomainChange($subdomain);
-            }
+            // Update the typo3 website (asynchronously with messenger)
+            $this->messageBus->dispatch(
+                new Typo3UpdateCommand($subdomain->getOrganization()->getId())
+            );
+
+            // Envoi d'un email
+            $this->sendEmailAfterSubdomainChange($subdomain);
         }
     }
 
@@ -87,7 +83,7 @@ class OnSubdomainChange extends OnChangeDefault
             [
                 'access' => $admin,
                 'subdomain' => $subdomain,
-                'url' => $this->organizationUtils::getOrganizationWebsite($subdomain->getOrganization())
+                'url' => $this->organizationUtils->getOrganizationWebsite($subdomain->getOrganization())
             ]
         );
     }

+ 3 - 2
src/Service/Organization/OrganizationProfileCreator.php

@@ -20,6 +20,7 @@ class OrganizationProfileCreator
     public function __construct(
         private Module $module,
         private Tree $tree,
+        private \App\Service\Organization\Utils $organizationUtils
     )
     { }
 
@@ -48,7 +49,7 @@ class OrganizationProfileCreator
             $organizationProfile->addParent($parentProfile);
         }
 
-        $organizationProfile->setCurrentYear(organizationUtils::getOrganizationCurrentActivityYear($organization));
+        $organizationProfile->setCurrentYear($this->organizationUtils->getOrganizationCurrentActivityYear($organization));
 
         return $organizationProfile;
     }
@@ -63,7 +64,7 @@ class OrganizationProfileCreator
         $organizationProfile
             ->setId($organization->getId())
             ->setName($organization->getName())
-            ->setWebsite(Utils::getOrganizationWebsite($organization));
+            ->setWebsite($this->organizationUtils->getOrganizationWebsite($organization));
 
         return $organizationProfile;
     }

+ 6 - 6
src/Service/Organization/Utils.php

@@ -77,7 +77,7 @@ class Utils
      * @throws \Exception
      * @see UtilsTest::testGetOrganizationCurrentActivityYear()
      */
-    public static function getOrganizationCurrentActivityYear(Organization $organization): int{
+    public function getOrganizationCurrentActivityYear(Organization $organization): int{
         $today = new \DateTime();
         $year = intval($today->format('Y'));
 
@@ -101,7 +101,7 @@ class Utils
      * @throws \Exception
      * @see UtilsTest::testGetActivityPeriodsSwitchYear()
      */
-    public static function getActivityPeriodsSwitchYear(Organization $organization, int $year): array
+    public function getActivityPeriodsSwitchYear(Organization $organization, int $year): array
     {
         $musicalDate = $organization->getParameters()->getMusicalDate();
 
@@ -128,7 +128,7 @@ class Utils
      * @throws \Exception
      * @see UtilsTest::testgetActivityYearSwitchDate()
      */
-    public static function getActivityYearSwitchDate(Organization $organization, \DateTimeInterface $date): int
+    public function getActivityYearSwitchDate(Organization $organization, \DateTimeInterface $date): int
     {
         $year = $date->format('Y');
         $musicalDate = $organization->getParameters()->getMusicalDate();
@@ -152,7 +152,7 @@ class Utils
      * @param Organization $organization
      * @return string | null
      */
-    public static function getOrganizationActiveSubdomain(Organization $organization): ?string {
+    public function getOrganizationActiveSubdomain(Organization $organization): ?string {
         foreach ($organization->getSubdomains() as $subdomain) {
             if ($subdomain->isActive()) {
                 return $subdomain->getSubdomain();
@@ -169,7 +169,7 @@ class Utils
      * @param Organization $organization
      * @return string | null
      */
-    public static function getOrganizationWebsite(Organization $organization): ?string {
+    public function getOrganizationWebsite(Organization $organization): ?string {
         $parameters = $organization->getParameters();
 
         if ($parameters->getDesactivateOpentalentSiteWeb()) {
@@ -183,7 +183,7 @@ class Utils
             return UrlBuilder::prependHttps($parameters->getCustomDomain());
         }
 
-        $subdomain = self::getOrganizationActiveSubdomain($organization);
+        $subdomain = $this->getOrganizationActiveSubdomain($organization);
         if (!$subdomain) {
             return null;
         }

+ 3 - 2
tests/Service/Constraint/DateTimeConstraintTest.php

@@ -19,7 +19,8 @@ class DateTimeConstraintTest extends TestCase
    public function setUp(): void
    {
        $em = $this->getMockBuilder(EntityManagerInterface::class)->disableOriginalConstructor()->getMock();
-       $this->dateTimeConstraint = new DateTimeConstraint($em);
+       $organizationUtils = new \App\Service\Organization\Utils();
+       $this->dateTimeConstraint = new DateTimeConstraint($em, $organizationUtils);
 
        $this->periods = [
            'dateStart' => '2021-12-20',
@@ -217,4 +218,4 @@ class DateTimeConstraintTest extends TestCase
         $historical = ['dateStart' => null, 'dateEnd' => null];
         $this->assertFalse($this->invokeMethod($this->dateTimeConstraint, 'hasCustomPeriods', [$historical]));
     }
-}
+}

+ 7 - 0
tests/Service/OnChange/Organization/OnParametersChangeTest.php

@@ -27,16 +27,19 @@ class OnParametersChangeTest extends TestCase
     private CourseRepository $courseRepositoryMock;
     private \App\Service\Network\Utils $networkUtils;
     private MessageBusInterface $messageBus;
+    private \App\Service\Organization\Utils $organizationUtils;
 
     public function setUp():void
     {
         $this->courseRepositoryMock = $this->getMockBuilder(CourseRepository::class)->disableOriginalConstructor()->getMock();
         $this->networkUtils = $this->getMockBuilder(\App\Service\Network\Utils::class)->disableOriginalConstructor()->getMock();
+        $this->organizationUtils = $this->getMockBuilder(\App\Service\Organization\Utils::class)->disableOriginalConstructor()->getMock();
         $this->messageBus = $this->getMockBuilder(MessageBusInterface::class)->disableOriginalConstructor()->getMock();
         $this->parameters = new Parameters();
         $this->onParametersChange = new OnParametersChange(
             $this->courseRepositoryMock,
             $this->networkUtils,
+            $this->organizationUtils,
             $this->messageBus
         );
     }
@@ -310,6 +313,8 @@ class OnParametersChangeTest extends TestCase
         $this->parameters->setOrganization($organization);
         $organization->setParameters($this->parameters);
 
+        $this->organizationUtils->expects(self::once())->method('getActivityYearSwitchDate')->willReturn(2022);
+
         $course = new Course();
         $course->setStartYear(2021);
         $course->setEndYear(2022);
@@ -340,6 +345,8 @@ class OnParametersChangeTest extends TestCase
         $this->parameters->setOrganization($organization);
         $organization->setParameters($this->parameters);
 
+        $this->organizationUtils->expects(self::once())->method('getActivityYearSwitchDate')->willReturn(2021);
+
         $course = new Course();
         $course->setStartYear(2022);
         $course->setEndYear(2023);

+ 227 - 0
tests/Service/OnChange/Organization/OnSubdomainChangeTest.php

@@ -0,0 +1,227 @@
+<?php
+
+namespace App\Test\Service\OnChange\Organization;
+
+use App\Entity\Access\Access;
+use App\Entity\Organization\Organization;
+use App\Entity\Organization\Subdomain;
+use App\Message\Command\Typo3\Typo3UpdateCommand;
+use App\Service\MailHub;
+use App\Service\OnChange\OnChangeContext;
+use App\Service\OnChange\Organization\OnSubdomainChange;
+use App\Service\Typo3\BindFileService;
+use Doctrine\ORM\EntityManagerInterface;
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Messenger\Envelope;
+use Symfony\Component\Messenger\MessageBusInterface;
+
+class OnSubdomainChangeTest extends TestCase
+{
+    private \App\Service\Organization\Utils $organizationUtils;
+    private \App\Service\Access\Utils $accessUtils;
+    private MailHub $mailHub;
+    private BindFileService $bindFileService;
+    private MessageBusInterface $messageBus;
+    private EntityManagerInterface $entityManager;
+    private OnSubdomainChange $onSubdomainChange;
+
+    public function setUp():void
+    {
+        $this->organizationUtils = $this->getMockBuilder(\App\Service\Organization\Utils::class)->disableOriginalConstructor()->getMock();
+        $this->accessUtils = $this->getMockBuilder(\App\Service\Access\Utils::class)->disableOriginalConstructor()->getMock();
+        $this->mailHub = $this->getMockBuilder(MailHub::class)->disableOriginalConstructor()->getMock();
+        $this->bindFileService = $this->getMockBuilder(BindFileService::class)->disableOriginalConstructor()->getMock();
+        $this->messageBus = $this->getMockBuilder(MessageBusInterface::class)->disableOriginalConstructor()->getMock();
+        $this->entityManager = $this->getMockBuilder(EntityManagerInterface::class)->disableOriginalConstructor()->getMock();
+
+        $this->onSubdomainChange = new OnSubdomainChange(
+            $this->organizationUtils,
+            $this->accessUtils,
+            $this->mailHub,
+            $this->bindFileService,
+            $this->messageBus,
+            $this->entityManager
+        );
+    }
+
+    public function testValidateIsOk(): void
+    {
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+        $context->method('isPostRequest')->willReturn(true);
+
+        $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
+        $organization->expects(self::once())->method('getSubdomains')->willReturn(new \Doctrine\Common\Collections\ArrayCollection([1,2]));
+
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->expects(self::once())->method('getOrganization')->willReturn($organization);
+
+        $this->onSubdomainChange->validate($subdomain, $context);
+    }
+
+    public function testValidateIsPutRequest(): void
+    {
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+        $context->method('isPostRequest')->willReturn(false);
+
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->expects(self::never())->method('getOrganization');
+
+        $this->onSubdomainChange->validate($subdomain, $context);
+    }
+
+    public function testValidateMaxReached(): void
+    {
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+        $context->method('isPostRequest')->willReturn(true);
+
+        $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
+        $organization->expects(self::once())->method('getSubdomains')->willReturn(new \Doctrine\Common\Collections\ArrayCollection([1,2,3]));
+
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->expects(self::once())->method('getOrganization')->willReturn($organization);
+
+        try {
+            $this->onSubdomainChange->validate($subdomain, $context);
+            throw new \AssertionError('A validation error should have been thrown');
+        } catch (\RuntimeException) {}
+    }
+
+    public function testOnChangeNoChange(): void
+    {
+        $onChange =  $this
+            ->getMockBuilder(OnSubdomainChange::class)
+            ->onlyMethods(['sendEmailAfterSubdomainChange'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->bindFileService->expects(self::never())->method('registerSubdomain');
+        $this->entityManager->expects(self::never())->method('flush');
+        $this->messageBus->expects(self::never())->method('dispatch');
+        $onChange->expects(self::never())->method('sendEmailAfterSubdomainChange');
+
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+
+        $onChange->onChange($subdomain, $context);
+    }
+
+    public function testOnChangeActivated(): void {
+        $this->bindFileService->expects(self::never())->method('registerSubdomain');
+        $this->entityManager->expects(self::once())->method('flush');
+        $this->messageBus
+            ->expects(self::once())
+            ->method('dispatch')
+            ->with(self::isInstanceOf(Typo3UpdateCommand::class))
+            ->willReturn(new Envelope(new Typo3UpdateCommand(1)));
+
+        $onChange = $this
+            ->getMockBuilder(OnSubdomainChange::class)
+            ->onlyMethods(['sendEmailAfterSubdomainChange'])
+            ->setConstructorArgs(
+                [$this->organizationUtils, $this->accessUtils, $this->mailHub, $this->bindFileService, $this->messageBus, $this->entityManager]
+            )
+            ->getMock();
+        $onChange->expects(self::once())->method('sendEmailAfterSubdomainChange');
+
+        // Le sous-domaine qu'on vient d'activer
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->method('isActive')->willReturn(true);
+
+        // Son état précédent
+        $previousData = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $previousData->method('isActive')->willReturn(false);
+
+        // Le sous domaine qui était actif jusqu'ici, et que le OnChange devrait désactiver
+        $otherSubdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $otherSubdomain->method('isActive')->willReturn(true);
+        $otherSubdomain->expects(self::once())->method('setActive')->with(false);
+
+        $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
+        $organization->method('getId')->willReturn(1);
+        $organization->expects(self::once())->method('getSubdomains')->willReturn(new \Doctrine\Common\Collections\ArrayCollection([$subdomain, $otherSubdomain]));
+
+        $subdomain->expects(self::exactly(2))->method('getOrganization')->willReturn($organization);
+
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+        $context->method('previousData')->willReturn($previousData);
+        $context->method('isPutRequest')->willReturn(true);
+        $context->method('isPostRequest')->willReturn(false);
+
+        $onChange->onChange($subdomain, $context);
+    }
+
+    public function testOnChangeCreated(): void {
+        $this->bindFileService->expects(self::once())->method('registerSubdomain');
+        $this->entityManager->expects(self::once())->method('flush');
+        $this->messageBus
+            ->expects(self::once())
+            ->method('dispatch')
+            ->with(self::isInstanceOf(Typo3UpdateCommand::class))
+            ->willReturn(new Envelope(new Typo3UpdateCommand(1)));
+
+        $onChange = $this
+            ->getMockBuilder(OnSubdomainChange::class)
+            ->onlyMethods(['sendEmailAfterSubdomainChange'])
+            ->setConstructorArgs(
+                [$this->organizationUtils, $this->accessUtils, $this->mailHub, $this->bindFileService, $this->messageBus, $this->entityManager]
+            )
+            ->getMock();
+        $onChange->expects(self::once())->method('sendEmailAfterSubdomainChange');
+
+        // Le sous-domaine qu'on vient d'activer
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->method('isActive')->willReturn(true);
+
+        // Le sous domaine qui était actif jusqu'ici, et que le OnChange devrait désactiver
+        $otherSubdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $otherSubdomain->method('isActive')->willReturn(true);
+        $otherSubdomain->expects(self::once())->method('setActive')->with(false);
+
+        $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
+        $organization->method('getId')->willReturn(1);
+        $organization->expects(self::once())->method('getSubdomains')->willReturn(new \Doctrine\Common\Collections\ArrayCollection([$subdomain, $otherSubdomain]));
+
+        $subdomain->expects(self::exactly(2))->method('getOrganization')->willReturn($organization);
+
+        $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
+        $context->method('previousData')->willReturn(null);
+        $context->method('isPutRequest')->willReturn(false);
+        $context->method('isPostRequest')->willReturn(true);
+
+        $onChange->onChange($subdomain, $context);
+    }
+
+    public function testSendEmailAfterSubdomainChange(): void {
+        $admin = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
+
+        $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
+
+        $subdomain = $this->getMockBuilder(Subdomain::class)->disableOriginalConstructor()->getMock();
+        $subdomain->expects(self::once())->method('getSubdomain')->willReturn('mysubdomain');
+        $subdomain->expects(self::exactly(3))->method('getOrganization')->willReturn($organization);
+
+        $this->accessUtils->expects(self::once())->method('findAdminFor')->with($organization)->willReturn($admin);
+
+        $this->organizationUtils
+            ->expects(self::once())
+            ->method('getOrganizationWebsite')
+            ->with($organization)
+            ->willReturn('mysubdomain.opentalent.fr');
+
+        $this->mailHub
+            ->expects(self::once())
+            ->method('sendAutomaticEmailToAdmin')
+            ->with(
+                $organization,
+                'Nouveau sous domaine: mysubdomain',
+                'subdomain',
+                [
+                    'access' => $admin,
+                    'subdomain' => $subdomain,
+                    'url' => 'mysubdomain.opentalent.fr'
+                ]
+            );
+
+        $this->onSubdomainChange->sendEmailAfterSubdomainChange($subdomain);
+    }
+}

+ 3 - 1
tests/Service/Organization/OrganizationProfileCreatorTest.php

@@ -38,7 +38,9 @@ class OrganizationProfileCreatorTest extends TestCase
             ->with($this->organization)
             ->willReturn([$parent, $parent]);
 
-        $this->organizationProfileCreator = new OrganizationProfileCreator($this->moduleMock,$this->treeMock);
+        $organizationUtils = new \App\Service\Organization\Utils();
+
+        $this->organizationProfileCreator = new OrganizationProfileCreator($this->moduleMock,$this->treeMock, $organizationUtils);
 
         $this->organization->setPrincipalType(PrincipalTypeEnum::ARTISTIC_EDUCATION_ONLY());
         $settings = new Settings();

+ 8 - 6
tests/Service/Organization/UtilsTest.php

@@ -101,9 +101,9 @@ class UtilsTest extends TestCase
 
         $today = new \DateTime('now');
         if($today->format('m') < 9)
-            $this->assertEquals( ($today->format('Y') - 1), Utils::getOrganizationCurrentActivityYear($this->organization));
+            $this->assertEquals( ($today->format('Y') - 1), $this->organizationUtils->getOrganizationCurrentActivityYear($this->organization));
         else
-            $this->assertEquals($today->format('Y'), Utils::getOrganizationCurrentActivityYear($this->organization));
+            $this->assertEquals($today->format('Y'), $this->organizationUtils->getOrganizationCurrentActivityYear($this->organization));
     }
 
     /**
@@ -113,7 +113,9 @@ class UtilsTest extends TestCase
         $parameters = new Parameters();
         $parameters->setMusicalDate(new \DateTime('2020-09-05'));
         $this->organization->setParameters($parameters);
-        $periods = Utils::getActivityPeriodsSwitchYear($this->organization, 2022);
+
+        $organizationUtils = new \App\Service\Organization\Utils();
+        $periods = $organizationUtils->getActivityPeriodsSwitchYear($this->organization, 2022);
 
         $this->assertEquals('2022-09-05', $periods['dateStart']);
         $this->assertEquals('2023-09-04', $periods['dateEnd']);
@@ -127,7 +129,7 @@ class UtilsTest extends TestCase
         $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')));
+        $this->assertEquals(2022, $this->organizationUtils->getActivityYearSwitchDate($this->organization, new \DateTime('2022-09-10')));
+        $this->assertEquals(2021, $this->organizationUtils->getActivityYearSwitchDate($this->organization, new \DateTime('2022-09-02')));
     }
-}
+}