feat: better data wf
This commit is contained in:
		
							parent
							
								
									9bd3b5efff
								
							
						
					
					
						commit
						1a3cf1c2e0
					
				@ -2,8 +2,9 @@
 | 
			
		||||
 | 
			
		||||
namespace App\Controller;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCode;
 | 
			
		||||
use App\Form\Type\QRCodeType;
 | 
			
		||||
use App\Service\DTO\QRCodeEntityConverter;
 | 
			
		||||
use App\Service\QRCodeGeneratorInterface;
 | 
			
		||||
use App\Service\QRCodeQROptionsProviderInterface;
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
			
		||||
@ -12,7 +13,7 @@ use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\Routing\Attribute\Route;
 | 
			
		||||
 | 
			
		||||
class IndexController extends AbstractController {
 | 
			
		||||
    public function __construct(private readonly QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory) {}
 | 
			
		||||
    public function __construct(private readonly QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory, private readonly QRCodeEntityConverter $codeEntityConverter) {}
 | 
			
		||||
    #[Route('/', name: 'homepage')]
 | 
			
		||||
    public function indexAction(
 | 
			
		||||
        Request $request,
 | 
			
		||||
@ -33,7 +34,7 @@ class IndexController extends AbstractController {
 | 
			
		||||
                    do session, nicmene u takovehleho typu aplikace me to prijde naopak kontraproduktivni.
 | 
			
		||||
                    a zadani o tom mlci. Navic v pripade ze aplikace bude provozovana ve vice instancich
 | 
			
		||||
                    by se musela resit memcache, redis... */
 | 
			
		||||
                $qrCodeImage = $qrCodeGenerator->generateQRCodeFromEntity($qrCode);
 | 
			
		||||
                $qrCodeImage = $qrCodeGenerator->generateQRCodeFromEntity($this->codeEntityConverter->convert($qrCode));
 | 
			
		||||
                $form = $this->createForm(QRCodeType::class, $this->createQrCodeEntity());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								src/Entity/DTO/QRCode/QRCode.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/Entity/DTO/QRCode/QRCode.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\DTO\QRCode;
 | 
			
		||||
 | 
			
		||||
readonly class QRCode {
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        public string $iban,
 | 
			
		||||
        public \DateTimeImmutable $dueDate,
 | 
			
		||||
        public string $message,
 | 
			
		||||
        public QRCodeMoney $money,
 | 
			
		||||
        public QRCodeQROptions $qrOptions,
 | 
			
		||||
        public ?QRCodePaymentIdentification $paymentIdentification)
 | 
			
		||||
    { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								src/Entity/DTO/QRCode/QRCodeMoney.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/Entity/DTO/QRCode/QRCodeMoney.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\DTO\QRCode;
 | 
			
		||||
 | 
			
		||||
readonly class QRCodeMoney
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(public string $amount, public string $currency) { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								src/Entity/DTO/QRCode/QRCodePaymentIdentification.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/Entity/DTO/QRCode/QRCodePaymentIdentification.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\DTO\QRCode;
 | 
			
		||||
 | 
			
		||||
readonly class QRCodePaymentIdentification
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(public ?string $variableSymbol, public ?string $specificSymbol, public ?string $constantSymbol) { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								src/Entity/DTO/QRCode/QRCodeQROptions.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/Entity/DTO/QRCode/QRCodeQROptions.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\DTO\QRCode;
 | 
			
		||||
 | 
			
		||||
readonly class QRCodeQROptions
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(public int $scale, public int $margin)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\QRCode;
 | 
			
		||||
namespace App\Entity\Input\QRCode;
 | 
			
		||||
use Symfony\Component\Validator\Constraints as Assert;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\QRCode;
 | 
			
		||||
namespace App\Entity\Input\QRCode;
 | 
			
		||||
 | 
			
		||||
use App\Validator\Currency;
 | 
			
		||||
use App\Validator\Money;
 | 
			
		||||
@ -1,10 +1,9 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\QRCode;
 | 
			
		||||
namespace App\Entity\Input\QRCode;
 | 
			
		||||
 | 
			
		||||
use App\Validator\BankPaymentIdentificationNumber;
 | 
			
		||||
use Symfony\Component\Validator\Constraints as Assert;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Payment identification for QR code
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\QRCode;
 | 
			
		||||
namespace App\Entity\Input\QRCode;
 | 
			
		||||
 | 
			
		||||
use Symfony\Component\Validator\Constraints as Assert;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Form\Type;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Service\CurrencyListerInterface;
 | 
			
		||||
use Symfony\Component\Form\AbstractType;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Form\Type;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use Symfony\Component\Form\AbstractType;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@ declare(strict_types=1);
 | 
			
		||||
namespace App\Form\Type;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCode;
 | 
			
		||||
use Symfony\Component\Form\AbstractType;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\DateType;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
 | 
			
		||||
interface CacheableQRCodeGeneratorInterface extends QRCodeGeneratorInterface
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -3,9 +3,8 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use Exception;
 | 
			
		||||
use Psr\Cache\InvalidArgumentException;
 | 
			
		||||
use Psr\Log\LoggerInterface;
 | 
			
		||||
use Symfony\Contracts\Cache\CacheInterface;
 | 
			
		||||
use Symfony\Contracts\Cache\ItemInterface;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								src/Service/DTO/QRCodeEntityConverter.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/Service/DTO/QRCodeEntityConverter.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Service\DTO;
 | 
			
		||||
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeQROptions;
 | 
			
		||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
 | 
			
		||||
final readonly class QRCodeEntityConverter
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private ValidatorInterface $validator) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function convert(\App\Entity\Input\QRCode\QRCode $code): QRCode {
 | 
			
		||||
        if (count($this->validator->validate($code)) !== 0) {
 | 
			
		||||
            throw new \InvalidArgumentException("QRCode entity is not valid");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new QRCode(
 | 
			
		||||
            $code->getIban() ?? throw new \InvalidArgumentException("iban not set"),
 | 
			
		||||
            \DateTimeImmutable::createFromMutable($code->getDueDate() ?? throw new \InvalidArgumentException("due date not set")),
 | 
			
		||||
            $code->getMessage() ?? throw new \InvalidArgumentException("message not set"),
 | 
			
		||||
            $this->convertMoney($code->getMoney() ?? throw new \InvalidArgumentException("money not set")),
 | 
			
		||||
            $this->convertCodeOptions($code->getCodeQROptions() ?? throw new \InvalidArgumentException("codeQROptions not set")),
 | 
			
		||||
            $this->convertIdentification($code->getPaymentIdentification())
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function convertMoney(\App\Entity\Input\QRCode\QRCodeMoney $money): QRCodeMoney
 | 
			
		||||
    {
 | 
			
		||||
        return new QRCodeMoney(
 | 
			
		||||
            $money->getAmount() ?? throw new \InvalidArgumentException("amount not set"),
 | 
			
		||||
            $money->getCurrency() ?? throw new \InvalidArgumentException("currency not set")
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function convertCodeOptions(\App\Entity\Input\QRCode\QRCodeQROptions $options): QRCodeQROptions
 | 
			
		||||
    {
 | 
			
		||||
        return new QRCodeQROptions(
 | 
			
		||||
            $options->getScale(),
 | 
			
		||||
            $options->getMargin()
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function convertIdentification(?\App\Entity\Input\QRCode\QRCodePaymentIdentification $ident): ?QRCodePaymentIdentification {
 | 
			
		||||
        return match ($ident) {
 | 
			
		||||
            null => null,
 | 
			
		||||
            default => new QRCodePaymentIdentification(
 | 
			
		||||
                $ident->getVariableSymbol(),
 | 
			
		||||
                $ident->getSpecificSymbol(),
 | 
			
		||||
                $ident->getConstantSymbol()
 | 
			
		||||
            )
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use App\Service\Exception\QRCodeGeneratorException;
 | 
			
		||||
 | 
			
		||||
interface QRCodeGeneratorInterface
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCodeQROptions;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCodeQROptions;
 | 
			
		||||
 | 
			
		||||
readonly final class QRCodeQROptionsDefaultProvider implements QRCodeQROptionsProviderInterface {
 | 
			
		||||
    const DEFAULT_SCALE = 8;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCodeQROptions;
 | 
			
		||||
use App\Entity\Input\QRCode\QRCodeQROptions;
 | 
			
		||||
 | 
			
		||||
interface QRCodeQROptionsProviderInterface {
 | 
			
		||||
    public function getDefault(): QRCodeQROptions;
 | 
			
		||||
 | 
			
		||||
@ -3,10 +3,10 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service\Remote\Edge;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Entity\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use App\Entity\QRCode\QRCodeQROptions;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeQROptions;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCode;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCodeMoney;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCodePaymentIdentification;
 | 
			
		||||
@ -19,28 +19,28 @@ class QRCodeEntityConverter
 | 
			
		||||
 | 
			
		||||
    public function convert(QRCode $code): EdgeQRCode {
 | 
			
		||||
        return new EdgeQRCode(
 | 
			
		||||
            $code->getIban() ?? throw new MissingParameterException("iban not set"),
 | 
			
		||||
            $code->getDueDate() ? $code->getDueDate()->format('Y-m-d') : throw new MissingParameterException("due date not set"),
 | 
			
		||||
            $code->getMessage() ?? throw new MissingParameterException("message not set"),
 | 
			
		||||
            $this->convertMoney($code->getMoney() ?? throw new MissingParameterException("money not set")),
 | 
			
		||||
            $this->convertCodeOptions($code->getCodeQROptions() ?? throw new MissingParameterException("codeQROptions not set")),
 | 
			
		||||
            $this->convertIdentification($code->getPaymentIdentification())
 | 
			
		||||
            $code->iban,
 | 
			
		||||
            $code->dueDate->format('Y-m-d'),
 | 
			
		||||
            $code->message,
 | 
			
		||||
            $this->convertMoney($code->money),
 | 
			
		||||
            $this->convertCodeOptions($code->qrOptions),
 | 
			
		||||
            $this->convertIdentification($code->paymentIdentification)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function convertMoney(QRCodeMoney $money): EdgeQRCodeMoney
 | 
			
		||||
    {
 | 
			
		||||
        return new EdgeQRCodeMoney(
 | 
			
		||||
            $money->getAmount() ?? throw new MissingParameterException("amount not set"),
 | 
			
		||||
            $money->getCurrency() ?? throw new MissingParameterException("currency not set")
 | 
			
		||||
            $money->amount,
 | 
			
		||||
            $money->currency
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function convertCodeOptions(QRCodeQROptions $options): EdgeQRCodeQROptions
 | 
			
		||||
    {
 | 
			
		||||
        return new EdgeQRCodeQROptions(
 | 
			
		||||
            $options->getScale(),
 | 
			
		||||
            $options->getMargin()
 | 
			
		||||
            $options->scale,
 | 
			
		||||
            $options->margin
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -53,9 +53,9 @@ class QRCodeEntityConverter
 | 
			
		||||
                "0"
 | 
			
		||||
            ),
 | 
			
		||||
            default => new EdgeQRCodePaymentIdentification(
 | 
			
		||||
                $ident->getVariableSymbol() ?? "0",
 | 
			
		||||
                $ident->getSpecificSymbol() ?? "0",
 | 
			
		||||
                $ident->getConstantSymbol() ?? "0"
 | 
			
		||||
                $ident->variableSymbol ?? "0",
 | 
			
		||||
                $ident->specificSymbol ?? "0",
 | 
			
		||||
                $ident->constantSymbol ?? "0"
 | 
			
		||||
            )
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service\Remote;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use App\Service\CacheableQRCodeGeneratorInterface;
 | 
			
		||||
use App\Service\Remote\Edge\QRCodeEntityConverter;
 | 
			
		||||
use App\Service\Remote\Exception\UsetrenoQRCodeException;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace App\Service;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
 | 
			
		||||
readonly final class StubQRCodeGenerator implements QRCodeGeneratorInterface
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,10 @@
 | 
			
		||||
 | 
			
		||||
namespace App\Tests\Service\Remote;
 | 
			
		||||
 | 
			
		||||
use App\Entity\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCode;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeMoney;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodePaymentIdentification;
 | 
			
		||||
use App\Entity\DTO\QRCode\QRCodeQROptions;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCode;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCodeMoney;
 | 
			
		||||
use App\Entity\Remote\Usetreno\Edge\EdgeQRCodePaymentIdentification;
 | 
			
		||||
@ -30,57 +33,24 @@ class UsetrenoQRCodeProviderTest extends TestCase
 | 
			
		||||
            ]
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        $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"
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        [$edgeEntity, $qrCodeEntity] = $this->createQRCodeEntityPair();
 | 
			
		||||
 | 
			
		||||
        $entity = $this->createMock(QRCode::class);
 | 
			
		||||
 | 
			
		||||
        $qrCodeProvider = $this->createQRCodeProvider($successRequest, 200, $edgeEntity, $entity);
 | 
			
		||||
        $data = $qrCodeProvider->generateQRCodeFromEntity($entity);
 | 
			
		||||
        $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 = new EdgeQRCode(
 | 
			
		||||
            "CZ0000",
 | 
			
		||||
            (new \DateTime("now"))->format('Y-m-d'),
 | 
			
		||||
            "foo",
 | 
			
		||||
            new EdgeQRCodeMoney(
 | 
			
		||||
                100,
 | 
			
		||||
                "CZK"
 | 
			
		||||
            ),
 | 
			
		||||
            new EdgeQRCodeQROptions(
 | 
			
		||||
                1,
 | 
			
		||||
                1
 | 
			
		||||
            ),
 | 
			
		||||
            new EdgeQRCodePaymentIdentification(
 | 
			
		||||
                "0", "0", "0"
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        [$edgeEntity, $qrCodeEntity] = $this->createQRCodeEntityPair();
 | 
			
		||||
 | 
			
		||||
        $entity = $this->createMock(QRCode::class);
 | 
			
		||||
 | 
			
		||||
        $qrCodeProvider = $this->createQRCodeProvider($failureRequest, 500, $edgeEntity, $entity);
 | 
			
		||||
        $data = $qrCodeProvider->generateQRCodeFromEntity($entity);
 | 
			
		||||
        $qrCodeProvider = $this->createQRCodeProvider($failureRequest, 500, $edgeEntity, $qrCodeEntity);
 | 
			
		||||
        $data = $qrCodeProvider->generateQRCodeFromEntity($qrCodeEntity);
 | 
			
		||||
        $this->assertEquals($failureRequest["data"]["base64Data"], $data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -107,4 +77,42 @@ class UsetrenoQRCodeProviderTest extends TestCase
 | 
			
		||||
 | 
			
		||||
        return new UsetrenoQRCodeProvider($this->getLogger(), $mock, $converterMock);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user