diff --git a/tests/Unit/ModelBasedCheckoutTest.php b/tests/Unit/ModelBasedCheckoutTest.php index 447fd984a..d77af61fa 100644 --- a/tests/Unit/ModelBasedCheckoutTest.php +++ b/tests/Unit/ModelBasedCheckoutTest.php @@ -19,6 +19,7 @@ use Adyen\Service\Checkout\PaymentLinksApi; use Adyen\Service\Checkout\PaymentsApi; use Adyen\Service\Checkout\RecurringApi; +use Adyen\Model\Checkout\LineItem; class ModelBasedCheckoutTest extends TestCaseMock { @@ -380,4 +381,56 @@ public function testNonNullableSettersCanBeNulled() // Assert nulled value is not in serialised string $this->assertFalse(strpos($jsonString, 'billingAddress') !== false); } + + // test request JSON payload serialization + public function testJsonSerializationMatchesExpected() + { + $amount = new Amount(); + $amount->setCurrency('EUR')->setValue(10000); + + $lineItem1 = new LineItem(); + $lineItem1->setQuantity(1)->setAmountIncludingTax(5000)->setDescription('Sunglasses'); + $lineItem2 = new LineItem(); + $lineItem2->setQuantity(1)->setAmountIncludingTax(5000)->setDescription('Headphones'); + + $request = new CreateCheckoutSessionRequest(); + $request + ->setChannel('Web') + ->setAmount($amount) + ->setCountryCode('NL') + ->setMerchantAccount('YOUR_MERCHANT_ACCOUNT') + ->setReference('YOUR_PAYMENT_REFERENCE') + ->setReturnUrl('https://mycompany.example.org/redirect?orderRef=YOUR_PAYMENT_REFERENCE') + ->setLineItems([$lineItem1, $lineItem2]); + + $expectedJson = <<assertJsonStringEqualsJsonString($expectedJson, $actualJson); + } }