← Back
Editing: AgentReportTest.php
<?php namespace App\Tests\Unit\Report; use App\Entity\Solution; use App\Entity\User; use App\Report\AgentReport; use App\Repository\UserRepository; use App\Session\Filter\Role\ManagerSessionFilters; use App\Session\Filter\Role\OrganizationSessionFilters; use App\Session\Filter\SessionFiltersContainer; use DateTime; use Exception; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; class AgentReportTest extends KernelTestCase { private ?AgentReport $agentReport; private ?User $agent; private ?SessionFiltersContainer $sessionFilterContainer; /** * @throws Exception */ protected function setUp(): void { self::bootKernel(); $container = static::getContainer(); $this->agentReport = $container->get(AgentReport::class); $this->sessionFilterContainer = $container->get(SessionFiltersContainer::class); $userRepository = $container->get(UserRepository::class); $this->agent = $userRepository->find(5); /** @var ManagerSessionFilters $managerSessionFilters */ $managerSessionFilters = $container->get(OrganizationSessionFilters::class); $this->sessionFilterContainer->setCurrent($managerSessionFilters); } /** * @dataProvider dataControlProvider */ public function testRateControls( DateTime $dateStart, DateTime $dateEnd, DateTime $prevStart, DateTime $prevEnd, string $expectedEvo, int $expectedTotal ): void { $rateControls = $this->agentReport->getRateControls( $this->agent, $dateStart, $dateEnd, $prevStart, $prevEnd, (new Solution())->setId(1) ); $this->assertEquals($expectedEvo, $rateControls['evo']); $this->assertEquals($expectedTotal, $rateControls['total']); } /** * @dataProvider dataAlertProvider */ public function testRateAlerts( DateTime $dateStart, DateTime $dateEnd, DateTime $prevStart, DateTime $prevEnd, string $expectedEvo, int $expectedTotal ): void { $rateAlerts = $this->agentReport->getRateAlerts( $this->agent, $dateStart, $dateEnd, $prevStart, $prevEnd, (new Solution())->setId(1) ); $this->assertEquals($expectedEvo, $rateAlerts['evo']); $this->assertEquals($expectedTotal, $rateAlerts['total']); } private function dataControlProvider(): iterable { yield [ new DateTime('2022-02-01'), new DateTime('2022-02-28'), new DateTime('2022-01-01'), new DateTime('2022-01-31'), "80.00", 9, ]; yield [ new DateTime('2022-03-01'), new DateTime('2022-03-31'), new DateTime('2022-02-01'), new DateTime('2022-02-28'), "-66.67", 3, ]; } private function dataAlertProvider(): iterable { yield [ new DateTime('2022-02-01'), new DateTime('2022-02-28'), new DateTime('2022-01-01'), new DateTime('2022-01-31'), "0.00", 5, ]; yield [ new DateTime('2022-03-01'), new DateTime('2022-03-31'), new DateTime('2022-02-01'), new DateTime('2022-02-28'), "-60.00", 2, ]; } }
Save File
Cancel