Skip to content

Commit

Permalink
Merge branch 'main' into ECP-9240
Browse files Browse the repository at this point in the history
  • Loading branch information
candemiralp authored Dec 24, 2024
2 parents f3854c7 + 10722e4 commit 08fe89e
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 95 deletions.
20 changes: 0 additions & 20 deletions .github/dependabot.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/docker-compose.e2e.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: '3'
services:
playwright:
image: mcr.microsoft.com/playwright:v1.49.0
image: mcr.microsoft.com/playwright:v1.49.1
shm_size: 1gb
ipc: host
cap_add:
Expand Down
2 changes: 2 additions & 0 deletions Gateway/Http/Client/TransactionRefund.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ public function placeRequest(TransferInterface $transferObject): array
$this->adyenHelper->logResponse($responseData);
} catch (AdyenException $e) {
$this->adyenHelper->logAdyenException($e);
$responseData['error'] = $e->getMessage();
$responseData['errorCode'] = $e->getAdyenErrorCode();
}
$responses[] = $responseData;
}
Expand Down
9 changes: 9 additions & 0 deletions Model/Sales/OrderRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use Magento\Framework\Api\Search\FilterGroupBuilder;
use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\Framework\Api\SortOrderBuilder;
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
use Magento\Payment\Api\Data\PaymentAdditionalInfoInterfaceFactory;
use Magento\Sales\Api\Data\OrderExtensionFactory;
Expand All @@ -28,13 +29,15 @@
class OrderRepository extends SalesOrderRepository
{
private SearchCriteriaBuilder $searchCriteriaBuilder;
private SortOrderBuilder $sortOrderBuilder;
private FilterBuilder $filterBuilder;
private FilterGroupBuilder $filterGroupBuilder;

public function __construct(
SearchCriteriaBuilder $searchCriteriaBuilder,
FilterBuilder $filterBuilder,
FilterGroupBuilder $filterGroupBuilder,
SortOrderBuilder $sortOrderBuilder,
Metadata $metadata,
SearchResultFactory $searchResultFactory,
CollectionProcessorInterface $collectionProcessor = null,
Expand All @@ -56,6 +59,7 @@ public function __construct(
);

$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->sortOrderBuilder = $sortOrderBuilder;
$this->filterBuilder = $filterBuilder;
$this->filterGroupBuilder = $filterGroupBuilder;
}
Expand All @@ -68,9 +72,14 @@ public function getOrderByQuoteId(int $quoteId): OrderInterface|false
->create();

$quoteIdFilterGroup = $this->filterGroupBuilder->setFilters([$quoteIdFilter])->create();
$sortOrder = $this->sortOrderBuilder->setField('entity_id')
->setDescendingDirection()
->create();

$searchCriteria = $this->searchCriteriaBuilder
->setFilterGroups([$quoteIdFilterGroup])
->setSortOrders([$sortOrder])
->setPageSize(1)
->create();

$orders = $this->getList($searchCriteria)->getItems();
Expand Down
4 changes: 4 additions & 0 deletions Plugin/GraphQlPlaceOrderAddCartId.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public function __construct(
*/
public function afterResolve(PlaceOrder $placeOrder, array $result): array
{
if (!isset($result['order'])) {
return $result;
}

try {
$cart = $this->quoteHelper->getQuoteByOrderIncrementId($result['order']['order_number']);
$maskedId = $this->quoteIdToMaskedQuoteId->execute($cart->getId());
Expand Down
43 changes: 43 additions & 0 deletions Test/Unit/Gateway/Http/Client/TransactionRefundTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use Adyen\Service\Checkout\ModificationsApi;
use Magento\Payment\Gateway\Http\TransferInterface;
use PHPUnit\Framework\MockObject\MockObject;
use Adyen\AdyenException;

class TransactionRefundTest extends AbstractAdyenTestCase
{
Expand Down Expand Up @@ -102,4 +103,46 @@ public function testPlaceRequestIncludesHeadersInRequest()
$this->assertCount(1, $responses);
$this->assertArrayHasKey('pspReference', $responses[0]);
}

public function testPlaceRequestHandlesException()
{
$requestBody = [
'amount' => ['value' => 1000, 'currency' => 'EUR'],
'paymentPspReference' => '123456789'
];

$headers = ['idempotencyExtraData' => ['order_id' => '1001']];

$transferObjectMock = $this->createConfiguredMock(TransferInterface::class, [
'getBody' => [$requestBody],
'getHeaders' => $headers,
'getClientConfig' => []
]);

$serviceMock = $this->createMock(ModificationsApi::class);
$adyenClientMock = $this->createMock(Client::class);

$this->adyenHelperMock->method('initializeAdyenClientWithClientConfig')->willReturn($adyenClientMock);
$this->adyenHelperMock->method('initializeModificationsApi')->willReturn($serviceMock);
$this->adyenHelperMock->method('buildRequestHeaders')->willReturn(['custom-header' => 'value']);

$this->idempotencyHelperMock->expects($this->once())
->method('generateIdempotencyKey')
->with($requestBody, $headers['idempotencyExtraData'])
->willReturn('generated_idempotency_key');

$serviceMock->expects($this->once())
->method('refundCapturedPayment')
->willThrowException(new AdyenException());

$this->adyenHelperMock->expects($this->once())
->method('logAdyenException')
->with($this->isInstanceOf(AdyenException::class));

$responses = $this->transactionRefund->placeRequest($transferObjectMock);
$this->assertIsArray($responses);
$this->assertCount(1, $responses);
$this->assertArrayHasKey('error', $responses[0]);
$this->assertArrayHasKey('errorCode', $responses[0]);
}
}
20 changes: 18 additions & 2 deletions Test/Unit/Model/Sales/OrderRepositoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
use Magento\Framework\Api\Search\FilterGroupBuilder;
use Magento\Framework\Api\SearchCriteria;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\Framework\Api\SortOrder;
use Magento\Framework\Api\SortOrderBuilder;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\Sales\Api\Data\OrderSearchResultInterface;
use ReflectionClass;
Expand All @@ -41,10 +43,15 @@ public function testGetOrderByQuoteId()
$filterGroupBuilderMock->method('create')
->willReturn($this->createMock(FilterGroup::class));

$sortOrderBuilderMock = $this->createPartialMock(SortOrderBuilder::class, ['create']);
$sortOrderBuilderMock->method('create')
->willReturn($this->createMock(SortOrder::class));

$orderRepository = $this->buildOrderRepositoryClass(
$searchCriteriaBuilderMock,
$filterBuilderMock,
$filterGroupBuilderMock
$filterGroupBuilderMock,
$sortOrderBuilderMock
);

$order = $orderRepository->getOrderByQuoteId($quoteId);
Expand All @@ -54,7 +61,8 @@ public function testGetOrderByQuoteId()
public function buildOrderRepositoryClass(
$searchCriteriaBuilderMock = null,
$filterBuilderMock = null,
$filterGroupBuilderMock = null
$filterGroupBuilderMock = null,
$sortOrderBuilderMock = null
): OrderRepository {
if (is_null($searchCriteriaBuilderMock)) {
$searchCriteriaBuilderMock = $this->createMock(SearchCriteriaBuilder::class);
Expand All @@ -68,6 +76,10 @@ public function buildOrderRepositoryClass(
$filterGroupBuilderMock = $this->createMock(FilterGroupBuilder::class);
}

if (is_null($sortOrderBuilderMock)) {
$sortOrderBuilderMock = $this->createMock(SortOrderBuilder::class);
}

$orderRepositoryPartialMock = $this->getMockBuilder(OrderRepository::class)
->setMethods(['getList'])
->disableOriginalConstructor()
Expand All @@ -87,6 +99,10 @@ public function buildOrderRepositoryClass(
$filterGroupBuilderProperty->setAccessible(true);
$filterGroupBuilderProperty->setValue($orderRepositoryPartialMock, $filterGroupBuilderMock);

$sortOrderBuilderProperty = $reflection->getProperty('sortOrderBuilder');
$sortOrderBuilderProperty->setAccessible(true);
$sortOrderBuilderProperty->setValue($orderRepositoryPartialMock, $sortOrderBuilderMock);

$orderSearchResultMock = $this->createConfiguredMock(OrderSearchResultInterface::class, [
'getItems' => [$this->createMock(OrderInterface::class)]
]);
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"require-dev": {
"phpunit/phpunit": "~9.6.1",
"magento/magento-coding-standard": "*",
"squizlabs/php_codesniffer": "~3.8.0"
"squizlabs/php_codesniffer": "~3.11.0"
},
"autoload": {
"files": [
Expand Down
Loading

0 comments on commit 08fe89e

Please sign in to comment.