"/api/v1/qr-code/create-for-bank-account-payment", "timestamp" => "2024-01-16T14:05:42+01:00", "data" => [ "base64Data" => "data:image/png;base64,$base64Image" ] ]; [$edgeEntity, $qrCodeEntity] = $this->createQRCodeEntityPair(); $qrCodeProvider = $this->createQRCodeProvider($successRequest, 200, $edgeEntity, $qrCodeEntity); $data = $qrCodeProvider->generateQRCodeFromEntity($qrCodeEntity); $this->assertEquals($base64Image, $data); } public function testFailureRequest() { $this->expectException(QRCodeGeneratorException::class); $failureRequest = [ "error" => "internal server error", ]; [$edgeEntity, $qrCodeEntity] = $this->createQRCodeEntityPair(); $qrCodeProvider = $this->createQRCodeProvider($failureRequest, 500, $edgeEntity, $qrCodeEntity); $data = $qrCodeProvider->generateQRCodeFromEntity($qrCodeEntity); $this->assertEquals($failureRequest["data"]["base64Data"], $data); } public function createQRCodeProvider(array $response, int $responseCode, EdgeQRCode $edgeEntity, QRCode $entity): UsetrenoQRCodeProvider { $responseMock = $this->createMock(ResponseInterface::class); $responseMock->expects($this->any()) ->method('getContent') ->will($this->returnValue(json_encode($response))); $responseMock->expects($this->any()) ->method('getStatusCode') ->will($this->returnValue($responseCode)); $mock = $this->createMock(UsetrenoHttpClient::class); $mock->expects($this->once()) ->method('request') ->will($this->returnValue($responseMock)); $converterMock = $this->createMock(QRCodeEntityConverter::class); $converterMock->expects($this->once()) ->method('convert') ->will($this->returnValue($edgeEntity)); return new UsetrenoQRCodeProvider($this->getLogger(), $mock, $converterMock, 0, 0); } protected function createQRCodeEntityPair() { $edgeEntity = new EdgeQRCode( "CZ0000", (new \DateTime("now"))->format('Y-m-d'), "foo", new EdgeQRCodeMoney( 100, "CZK" ), new EdgeQRCodeQROptions( 1, 1 ), new EdgeQRCodePaymentIdentification( "0", "0", "0" ) ); $qrCodeEntity = new QRCode( "CZ0000", new \DateTimeImmutable("now"), "foo", new QRCodeMoney( 100, "CZK" ), new QRCodeQROptions( 1, 1 ), new QRCodePaymentIdentification( "0", "0", "0" ) ); return [$edgeEntity, $qrCodeEntity]; } }