entityManager = self::getContainer()->get(EntityManagerInterface::class); } /** * @dataProvider provideSearchArguments */ public function testBuildFetchQueryForAccompanyingPeriod( ?\DateTimeImmutable $startDate = null, ?\DateTimeImmutable $endDate = null, ?string $content = null ): void { $period = $this->entityManager->createQuery('SELECT a FROM '.AccompanyingPeriod::class.' a') ->setMaxResults(1) ->getSingleResult(); if (null === $period) { throw new \RuntimeException('no accompanying period in databasee'); } $security = $this->prophesize(Security::class); $provider = new AccompanyingPeriodWorkEvaluationGenericDocProvider( $security->reveal(), $this->entityManager ); $query = $provider->buildFetchQueryForAccompanyingPeriod($period, $startDate, $endDate, $content); ['sql' => $sql, 'params' => $params, 'types' => $types] = (new FetchQueryToSqlBuilder())->toSql($query); $nb = $this->entityManager->getConnection()->executeQuery( 'SELECT COUNT(*) FROM ('.$sql.') AS sq', $params, $types )->fetchOne(); self::assertIsInt($nb, 'Test that there are no errors'); } public static function provideSearchArguments(): iterable { yield [null, null, null]; yield [new \DateTimeImmutable('1 month ago'), null, null]; yield [new \DateTimeImmutable('1 month ago'), new \DateTimeImmutable('now'), null]; yield [null, null, 'test']; } }