refactor: split buspro ApiClient into domain clients

This commit is contained in:
fromme committed 2026-10-02 13:55:30 +02:00
1 parent 0a55544ca8
commit b755a6f43e
52 files changed
+805 -695

No files matched your search

@@ -4,7 +4,7 @@ declare(strict_types=1);
namespace App\Tests\Controller\Voucher;
use App\BusProNet\ApiClient;
use App\BusProNet\Client\VoucherClient;
use App\BusProNet\Exception\TimeoutException;
use App\BusProNet\Model\Notification;
use App\BusProNet\Model\VoucherPaymentMethod;
@@ -42,11 +42,11 @@ class Step3ControllerTest extends TestCase
$dto->termsAccepted = true;
$dto->purchaseConfirmed = true;
$apiClient = $this->createMock(ApiClient::class);
$apiClient->expects(self::once())->method('createVoucherSaleInquiry')->willReturn(new VoucherSaleResponse('möglich'));
$apiClient->expects(self::never())->method('createVoucherSale');
$voucherClient = $this->createMock(VoucherClient::class);
$voucherClient->expects(self::once())->method('createVoucherSaleInquiry')->willReturn(new VoucherSaleResponse('möglich'));
$voucherClient->expects(self::never())->method('createVoucherSale');
$controller = $this->createController($apiClient);
$controller = $this->createController($voucherClient);
$controller->index($request);
self::assertTrue($controller->renderParameters['purchasable']);
@@ -61,12 +61,12 @@ class Step3ControllerTest extends TestCase
{
$request = $this->createRequest('GET', $this->createDto());
$apiClient = $this->createStub(ApiClient::class);
$apiClient->method('createVoucherSaleInquiry')->willReturn(
$voucherClient = $this->createStub(VoucherClient::class);
$voucherClient->method('createVoucherSaleInquiry')->willReturn(
new Notification(650, 'Fehlende Adress Daten. Bitte folgende Eingabefelder prüfen: Strasse')
);
$controller = $this->createController($apiClient);
$controller = $this->createController($voucherClient);
$response = $controller->index($request);
self::assertInstanceOf(RedirectResponse::class, $response);
@@ -79,12 +79,12 @@ class Step3ControllerTest extends TestCase
{
$request = $this->createRequest('GET', $this->createDto());
$apiClient = $this->createStub(ApiClient::class);
$apiClient->method('createVoucherSaleInquiry')->willReturn(
$voucherClient = $this->createStub(VoucherClient::class);
$voucherClient->method('createVoucherSaleInquiry')->willReturn(
new Notification(608, 'Gutscheinbetrag darf nicht größer als 5.000,00 Euro sein')
);
$response = $this->createController($apiClient)->index($request);
$response = $this->createController($voucherClient)->index($request);
self::assertInstanceOf(RedirectResponse::class, $response);
self::assertSame('/app_voucher_step_1', $response->getTargetUrl());
@@ -94,10 +94,10 @@ class Step3ControllerTest extends TestCase
{
$request = $this->createRequest('GET', $this->createDto());
$apiClient = $this->createStub(ApiClient::class);
$apiClient->method('createVoucherSaleInquiry')->willReturn(new Notification(619, 'Agentur-ID fehlt'));
$voucherClient = $this->createStub(VoucherClient::class);
$voucherClient->method('createVoucherSaleInquiry')->willReturn(new Notification(619, 'Agentur-ID fehlt'));
$controller = $this->createController($apiClient);
$controller = $this->createController($voucherClient);
$controller->index($request);
self::assertFalse($controller->renderParameters['purchasable']);
@@ -107,9 +107,9 @@ class Step3ControllerTest extends TestCase
{
$request = $this->createRequest('POST', $this->createDto());
$apiClient = $this->createMock(ApiClient::class);
$apiClient->expects(self::never())->method('createVoucherSaleInquiry');
$apiClient->expects(self::once())->method('createVoucherSale')->willReturn(new VoucherSaleResponse(
$voucherClient = $this->createMock(VoucherClient::class);
$voucherClient->expects(self::never())->method('createVoucherSaleInquiry');
$voucherClient->expects(self::once())->method('createVoucherSale')->willReturn(new VoucherSaleResponse(
status: 'erfolgt',
voucherId: 4711,
voucherNumber: 'K-001234',
@@ -124,7 +124,7 @@ class Step3ControllerTest extends TestCase
static fn (array $context) => !\in_array('ABCD1234', $context, true) && 'K-001234' === $context['voucher_number']
));
$controller = $this->createController($apiClient, $this->createSubmittedForm(), $logger);
$controller = $this->createController($voucherClient, $this->createSubmittedForm(), $logger);
$response = $controller->index($request);
self::assertInstanceOf(RedirectResponse::class, $response);
@@ -143,10 +143,10 @@ class Step3ControllerTest extends TestCase
$request = Request::create('/gutschein/uebersicht', 'POST');
$request->setSession(new Session(new MockArraySessionStorage()));
$apiClient = $this->createMock(ApiClient::class);
$apiClient->expects(self::never())->method('createVoucherSale');
$voucherClient = $this->createMock(VoucherClient::class);
$voucherClient->expects(self::never())->method('createVoucherSale');
$response = $this->createController($apiClient, $this->createSubmittedForm())->index($request);
$response = $this->createController($voucherClient, $this->createSubmittedForm())->index($request);
self::assertInstanceOf(RedirectResponse::class, $response);
self::assertSame('/app_voucher_error', $response->getTargetUrl());
@@ -159,10 +159,10 @@ class Step3ControllerTest extends TestCase
{
$request = $this->createRequest('POST', $this->createDto());
$apiClient = $this->createStub(ApiClient::class);
$apiClient->method('createVoucherSale')->willThrowException(new TimeoutException('Stream timeout'));
$voucherClient = $this->createStub(VoucherClient::class);
$voucherClient->method('createVoucherSale')->willThrowException(new TimeoutException('Stream timeout'));
$controller = $this->createController($apiClient, $this->createSubmittedForm());
$controller = $this->createController($voucherClient, $this->createSubmittedForm());
$controller->index($request);
self::assertFalse($controller->renderParameters['purchasable']);
@@ -205,12 +205,12 @@ class Step3ControllerTest extends TestCase
/**
* @param FormInterface<VoucherPurchaseDto>|null $form
*/
private function createController(ApiClient $apiClient, ?FormInterface $form = null, ?LoggerInterface $logger = null): TestableStep3Controller
private function createController(VoucherClient $voucherClient, ?FormInterface $form = null, ?LoggerInterface $logger = null): TestableStep3Controller
{
return new TestableStep3Controller(
$this->sessionManager,
$this->createStub(VoucherThumbnailResolver::class),
$apiClient,
$voucherClient,
new VoucherSaleRejectionMapper(),
$logger ?? new NullLogger(),
$form ?? $this->createStub(FormInterface::class),
@@ -236,12 +236,12 @@ final class TestableStep3Controller extends Step3Controller
public function __construct(
VoucherPurchaseSessionManager $sessionManager,
VoucherThumbnailResolver $thumbnailResolver,
ApiClient $apiClient,
VoucherClient $voucherClient,
VoucherSaleRejectionMapper $rejectionMapper,
LoggerInterface $logger,
private readonly FormInterface $form,
) {
parent::__construct($sessionManager, $thumbnailResolver, $apiClient, $rejectionMapper, $logger);
parent::__construct($sessionManager, $thumbnailResolver, $voucherClient, $rejectionMapper, $logger);
}
protected function getUser(): ?UserInterface