fix(release): repack zip root-level for the Composer registry #14
No files matched your search
@@ -0,0 +1,46 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace AeonDumpManager\Tests\MessageQueue\Handler;
|
||||
|
||||
use AeonDumpManager\MessageQueue\Handler\CreateDumpHandler;
|
||||
use AeonDumpManager\MessageQueue\Message\CreateDumpMessage;
|
||||
use AeonDumpManager\Service\DumpJobStatusService;
|
||||
use AeonDumpManager\Service\DumpService;
|
||||
use AeonDumpManager\Tests\Support\RecordingLogger;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class CreateDumpHandlerTest extends TestCase
|
||||
{
|
||||
public function testLogsStartOnSuccess(): void
|
||||
{
|
||||
$status = $this->createMock(DumpJobStatusService::class);
|
||||
$status->expects(self::once())->method('markRunning')->with('job-1');
|
||||
$status->expects(self::never())->method('markFailed');
|
||||
$logger = new RecordingLogger();
|
||||
|
||||
(new CreateDumpHandler($this->createMock(DumpService::class), $status, $logger))(new CreateDumpMessage('job-1'));
|
||||
|
||||
self::assertCount(1, $logger->records);
|
||||
self::assertSame('info', $logger->records[0]['level']);
|
||||
self::assertSame('Dump job started.', $logger->records[0]['message']);
|
||||
self::assertSame(['jobId' => 'job-1'], $logger->records[0]['context']);
|
||||
}
|
||||
|
||||
public function testLogsErrorAndMarksFailedWhenCreateThrows(): void
|
||||
{
|
||||
$exception = new \RuntimeException('boom');
|
||||
$service = $this->createMock(DumpService::class);
|
||||
$service->method('createAsync')->willThrowException($exception);
|
||||
$status = $this->createMock(DumpJobStatusService::class);
|
||||
$status->expects(self::once())->method('markFailed')->with('job-2', 'boom');
|
||||
$logger = new RecordingLogger();
|
||||
|
||||
(new CreateDumpHandler($service, $status, $logger))(new CreateDumpMessage('job-2'));
|
||||
|
||||
self::assertCount(2, $logger->records);
|
||||
self::assertSame('error', $logger->records[1]['level']);
|
||||
self::assertSame('Dump job failed.', $logger->records[1]['message']);
|
||||
self::assertSame('job-2', $logger->records[1]['context']['jobId']);
|
||||
self::assertSame($exception, $logger->records[1]['context']['exception']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace AeonDumpManager\Tests\Service;
|
||||
|
||||
use AeonDumpManager\Service\DumpBinaryLocator;
|
||||
use AeonDumpManager\Service\DumpFilenameParser;
|
||||
use AeonDumpManager\Service\DumpLister;
|
||||
use AeonDumpManager\Service\DumpService;
|
||||
use AeonDumpManager\Service\Exception\DumpNotFoundException;
|
||||
use AeonDumpManager\Tests\Support\RecordingLogger;
|
||||
use Doctrine\DBAL\Connection;
|
||||
use League\Flysystem\FilesystemOperator;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Shopware\Core\System\SystemConfig\SystemConfigService;
|
||||
|
||||
class DumpServiceLoggingTest extends TestCase
|
||||
{
|
||||
private const FILENAME = 'dump_2026-09-14_15-04-05.sql.gz';
|
||||
|
||||
private FilesystemOperator&MockObject $filesystem;
|
||||
|
||||
private RecordingLogger $logger;
|
||||
|
||||
private DumpService $service;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->filesystem = $this->createMock(FilesystemOperator::class);
|
||||
$this->logger = new RecordingLogger();
|
||||
$this->service = new DumpService(
|
||||
$this->createMock(DumpLister::class),
|
||||
$this->filesystem,
|
||||
$this->createMock(DumpBinaryLocator::class),
|
||||
$this->createMock(Connection::class),
|
||||
$this->createMock(SystemConfigService::class),
|
||||
new DumpFilenameParser(),
|
||||
$this->logger,
|
||||
);
|
||||
}
|
||||
|
||||
public function testDeleteLogsInfo(): void
|
||||
{
|
||||
$this->filesystem->method('fileExists')->willReturn(true);
|
||||
$this->filesystem->expects(self::once())->method('delete')->with(DumpLister::path(self::FILENAME));
|
||||
|
||||
$this->service->delete(self::FILENAME);
|
||||
|
||||
self::assertSame(
|
||||
[['level' => 'info', 'message' => 'Dump deleted.', 'context' => ['filename' => self::FILENAME]]],
|
||||
$this->logger->records
|
||||
);
|
||||
}
|
||||
|
||||
public function testDeleteMissingDumpDoesNotLog(): void
|
||||
{
|
||||
$this->filesystem->method('fileExists')->willReturn(false);
|
||||
|
||||
try {
|
||||
$this->service->delete(self::FILENAME);
|
||||
self::fail('Expected DumpNotFoundException.');
|
||||
} catch (DumpNotFoundException) {
|
||||
self::assertSame([], $this->logger->records);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace AeonDumpManager\Tests\Support;
|
||||
|
||||
use Psr\Log\AbstractLogger;
|
||||
|
||||
class RecordingLogger extends AbstractLogger
|
||||
{
|
||||
/** @var list<array{level: string, message: string, context: array<mixed>}> */
|
||||
public array $records = [];
|
||||
|
||||
public function log($level, string|\Stringable $message, array $context = []): void
|
||||
{
|
||||
$this->records[] = ['level' => (string) $level, 'message' => (string) $message, 'context' => $context];
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user