Initial commit: CloudOps infrastructure platform

This commit is contained in:
root
2026-04-09 19:58:57 +02:00
commit 1166a52f26
7762 changed files with 839452 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
<?php
declare(strict_types=1);
namespace Mautic\AssetBundle\Tests\Entity;
use Doctrine\DBAL\Query\QueryBuilder;
use Mautic\AssetBundle\Entity\Asset;
use Mautic\AssetBundle\Entity\AssetRepository;
use Mautic\CoreBundle\Test\Doctrine\RepositoryConfiguratorTrait;
use PHPUnit\Framework\TestCase;
use Symfony\Contracts\Translation\TranslatorInterface;
class AssetRepositoryTest extends TestCase
{
use RepositoryConfiguratorTrait;
private function getRepository(): AssetRepository
{
$repository = $this->configureRepository(Asset::class);
$this->connection->method('createQueryBuilder')->willReturnCallback(fn () => new QueryBuilder($this->connection));
$translator = $this->createMock(TranslatorInterface::class);
$translator->method('trans')->willReturnCallback(fn ($id) => match ($id) {
'mautic.asset.asset.searchcommand.isexpired' => 'is:expired',
'mautic.asset.asset.searchcommand.ispending' => 'is:pending',
default => $id,
});
$repository->setTranslator($translator);
return $repository;
}
#[\PHPUnit\Framework\Attributes\DataProvider('dataExpirationFilters')]
public function testAddSearchCommandWhereClauseHandlesExpirationFilters(string $command, string $expected): void
{
$repository = $this->getRepository();
$qb = $this->connection->createQueryBuilder();
$filter = (object) ['command' => $command, 'string' => '', 'not' => false, 'strict' => false];
$method = new \ReflectionMethod(AssetRepository::class, 'addSearchCommandWhereClause');
$method->setAccessible(true);
[$expr, $params] = $method->invoke($repository, $qb, $filter);
self::assertSame($expected, (string) $expr);
self::assertSame(['par1' => true], $params);
}
/**
* @return iterable<array{0: string, 1: string}>
*/
public static function dataExpirationFilters(): iterable
{
yield ['is:expired', "(a.isPublished = :par1 AND a.publishDown IS NOT NULL AND a.publishDown <> '' AND a.publishDown < CURRENT_TIMESTAMP())"];
yield ['is:pending', "(a.isPublished = :par1 AND a.publishUp IS NOT NULL AND a.publishUp <> '' AND a.publishUp > CURRENT_TIMESTAMP())"];
}
public function testGetSearchCommandsContainsExpirationFilters(): void
{
$repository = $this->getRepository();
$commands = $repository->getSearchCommands();
self::assertContains('mautic.asset.asset.searchcommand.isexpired', $commands);
self::assertContains('mautic.asset.asset.searchcommand.ispending', $commands);
}
}