Files
2026-10-04 00:50:19 +02:00

47 lines
2.0 KiB
PHP

<?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']);
}
}