mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
Add API tests for payment request order eligibility validator & fix validaton group registration
This commit is contained in:
parent
93dc2e1a0d
commit
8f06c32681
5 changed files with 104 additions and 0 deletions
|
|
@ -13,6 +13,11 @@
|
||||||
|
|
||||||
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
|
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
|
||||||
<class name="Sylius\Bundle\ApiBundle\Command\Payment\AddPaymentRequest">
|
<class name="Sylius\Bundle\ApiBundle\Command\Payment\AddPaymentRequest">
|
||||||
|
<constraint name="Sylius\Bundle\ApiBundle\Validator\Constraints\OrderPaymentRequestEligibility">
|
||||||
|
<option name="groups">
|
||||||
|
<value>sylius</value>
|
||||||
|
</option>
|
||||||
|
</constraint>
|
||||||
<constraint name="Sylius\Bundle\ApiBundle\Validator\Constraints\ChosenPaymentRequestActionEligibility">
|
<constraint name="Sylius\Bundle\ApiBundle\Validator\Constraints\ChosenPaymentRequestActionEligibility">
|
||||||
<option name="groups">
|
<option name="groups">
|
||||||
<value>sylius</value>
|
<value>sylius</value>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
This file is part of the Sylius package.
|
||||||
|
|
||||||
|
(c) Sylius Sp. z o.o.
|
||||||
|
|
||||||
|
For the full copyright and license information, please view the LICENSE
|
||||||
|
file that was distributed with this source code.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
|
||||||
|
<class name="Sylius\Bundle\ApiBundle\Command\Payment\UpdatePaymentRequest">
|
||||||
|
<constraint name="Sylius\Bundle\ApiBundle\Validator\Constraints\OrderPaymentRequestEligibility">
|
||||||
|
<option name="groups">
|
||||||
|
<value>sylius</value>
|
||||||
|
</option>
|
||||||
|
</constraint>
|
||||||
|
</class>
|
||||||
|
</constraint-mapping>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
Sylius\Component\Core\Model\Payment:
|
||||||
|
payment_not_placed:
|
||||||
|
method: "@payment_method_cash_on_delivery"
|
||||||
|
order: "@order_not_placed"
|
||||||
|
state: "new"
|
||||||
|
amount: 1000
|
||||||
|
currencyCode: "USD"
|
||||||
|
|
||||||
|
Sylius\Component\Core\Model\Order:
|
||||||
|
order_not_placed:
|
||||||
|
channel: "@channel_web"
|
||||||
|
currencyCode: "USD"
|
||||||
|
localeCode: "en_US"
|
||||||
|
state: "cart"
|
||||||
|
paymentState: "cart"
|
||||||
|
shippingState: "cart"
|
||||||
|
checkoutState: "cart"
|
||||||
|
tokenValue: "notPlacedOrderToken"
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
Sylius\Component\Payment\Model\PaymentRequest:
|
||||||
|
payment_request_not_placed:
|
||||||
|
__construct: [ '@payment_not_placed', '@payment_method_cash_on_delivery' ]
|
||||||
|
state: "new"
|
||||||
|
action: "capture"
|
||||||
|
payload: null
|
||||||
|
responseData: []
|
||||||
|
|
@ -191,6 +191,58 @@ final class PaymentRequestsTest extends JsonApiTestCase
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Test]
|
||||||
|
public function it_does_not_create_a_payment_request_for_an_order_that_is_not_placed(): void
|
||||||
|
{
|
||||||
|
$fixtures = $this->loadFixturesFromFiles([
|
||||||
|
'channel/channel.yaml',
|
||||||
|
'payment_method.yaml',
|
||||||
|
'payment_request/order_not_placed.yaml',
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** @var PaymentInterface $payment */
|
||||||
|
$payment = $fixtures['payment_not_placed'];
|
||||||
|
|
||||||
|
$this->client->request(
|
||||||
|
method: 'POST',
|
||||||
|
uri: '/api/v2/shop/orders/notPlacedOrderToken/payment-requests',
|
||||||
|
server: $this->headerBuilder()->withJsonLdAccept()->withJsonLdContentType()->build(),
|
||||||
|
content: json_encode([
|
||||||
|
'paymentId' => $payment->getId(),
|
||||||
|
'paymentMethodCode' => 'CASH_ON_DELIVERY',
|
||||||
|
], \JSON_THROW_ON_ERROR),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertResponseContainsViolations([
|
||||||
|
['propertyPath' => '', 'message' => 'Payment requests can only be created for placed orders.'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Test]
|
||||||
|
public function it_does_not_update_a_payment_request_for_an_order_that_is_not_placed(): void
|
||||||
|
{
|
||||||
|
$fixtures = $this->loadFixturesFromFiles([
|
||||||
|
'channel/channel.yaml',
|
||||||
|
'payment_method.yaml',
|
||||||
|
'payment_request/order_not_placed.yaml',
|
||||||
|
'payment_request/payment_request_not_placed.yaml',
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** @var PaymentRequestInterface $paymentRequest */
|
||||||
|
$paymentRequest = $fixtures['payment_request_not_placed'];
|
||||||
|
|
||||||
|
$this->client->request(
|
||||||
|
method: 'PUT',
|
||||||
|
uri: sprintf('/api/v2/shop/payment-requests/%s', $paymentRequest->getHash()),
|
||||||
|
server: $this->headerBuilder()->withJsonLdAccept()->withJsonLdContentType()->build(),
|
||||||
|
content: json_encode(['payload' => ['some' => 'payload']], \JSON_THROW_ON_ERROR),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertResponseContainsViolations([
|
||||||
|
['propertyPath' => '', 'message' => 'Payment requests can only be created for placed orders.'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string> $fixturesPaths
|
* @param array<string> $fixturesPaths
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue