47 lines
2.0 KiB
PHP
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']);
|
|
}
|
|
}
|