Skip to content

Commit 7e6e023

Browse files
committed
Added additional checks and test cases
1 parent 034af40 commit 7e6e023

File tree

2 files changed

+60
-16
lines changed

2 files changed

+60
-16
lines changed

app/code/Magento/GiftMessageGraphQl/Model/Resolver/Cart/Item/GiftMessage.php

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
namespace Magento\GiftMessageGraphQl\Model\Resolver\Cart\Item;
99

1010
use Magento\Framework\Exception\LocalizedException;
11-
use Magento\Framework\Exception\NoSuchEntityException;
1211
use Magento\Framework\GraphQl\Config\Element\Field;
1312
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
1413
use Magento\Framework\GraphQl\Query\Resolver\ContextInterface;
1514
use Magento\Framework\GraphQl\Query\Resolver\Value;
1615
use Magento\Framework\GraphQl\Query\ResolverInterface;
1716
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1817
use Magento\GiftMessage\Api\ItemRepositoryInterface;
18+
use Magento\GiftMessage\Helper\Message as GiftMessageHelper;
1919

2020
/**
2121
* Class provides ability to get GiftMessage for cart item
@@ -28,14 +28,20 @@ class GiftMessage implements ResolverInterface
2828
private $itemRepository;
2929

3030
/**
31-
* GiftMessageItem constructor.
32-
*
31+
* @var GiftMessageHelper
32+
*/
33+
private $giftMessageHelper;
34+
35+
/**
3336
* @param ItemRepositoryInterface $itemRepository
37+
* @param GiftMessageHelper $giftMessageHelper
3438
*/
3539
public function __construct(
36-
ItemRepositoryInterface $itemRepository
40+
ItemRepositoryInterface $itemRepository,
41+
GiftMessageHelper $giftMessageHelper
3742
) {
3843
$this->itemRepository = $itemRepository;
44+
$this->giftMessageHelper = $giftMessageHelper;
3945
}
4046

4147
/**
@@ -64,16 +70,28 @@ public function resolve(
6470

6571
$quoteItem = $value['model'];
6672

73+
if (!$this->giftMessageHelper->isMessagesAllowed('items', $quoteItem)) {
74+
return null;
75+
}
76+
77+
if (!$this->giftMessageHelper->isMessagesAllowed('item', $quoteItem)) {
78+
return null;
79+
}
80+
6781
try {
6882
$giftItemMessage = $this->itemRepository->get($quoteItem->getQuoteId(), $quoteItem->getItemId());
6983
} catch (LocalizedException $e) {
7084
throw new GraphQlInputException(__('Can\'t load cart item'));
7185
}
7286

87+
if (!isset($giftItemMessage)) {
88+
return null;
89+
}
90+
7391
return [
74-
'to' => isset($giftItemMessage) ? $giftItemMessage->getRecipient() : '',
75-
'from' => isset($giftItemMessage) ? $giftItemMessage->getSender() : '',
76-
'message'=> isset($giftItemMessage) ? $giftItemMessage->getMessage() : ''
92+
'to' => $giftItemMessage->getRecipient() ?? '',
93+
'from' => $giftItemMessage->getSender() ?? '',
94+
'message'=> $giftItemMessage->getMessage() ?? ''
7795
];
7896
}
7997
}

dev/tests/api-functional/testsuite/Magento/GraphQl/GiftMessage/Cart/Item/GiftMessageTest.php

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,55 @@ class GiftMessageTest extends GraphQlAbstract
2020
*/
2121
private $getMaskedQuoteIdByReservedOrderId;
2222

23-
protected function setUp()
23+
protected function setUp(): void
2424
{
2525
$objectManager = Bootstrap::getObjectManager();
2626
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
2727
}
2828

2929
/**
30+
* @magentoConfigFixture default_store sales/gift_options/allow_items 1
3031
* @magentoApiDataFixture Magento/GiftMessage/_files/guest/quote_with_item_message.php
3132
* @throws NoSuchEntityException
3233
* @throws Exception
3334
*/
3435
public function testGiftMessageCartForItem()
3536
{
3637
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_guest_order_with_gift_message');
38+
foreach ($this->requestCartResult($maskedQuoteId)['cart']['items'] as $item) {
39+
self::assertArrayHasKey('gift_message', $item);
40+
self::assertArrayHasKey('to', $item['gift_message']);
41+
self::assertArrayHasKey('from', $item['gift_message']);
42+
self::assertArrayHasKey('message', $item['gift_message']);
43+
}
44+
}
45+
46+
/**
47+
* @magentoConfigFixture default_store sales/gift_options/allow_items 0
48+
* @magentoApiDataFixture Magento/GiftMessage/_files/guest/quote_with_item_message.php
49+
* @throws NoSuchEntityException
50+
* @throws Exception
51+
*/
52+
public function testGiftMessageCartForItemNotAllow()
53+
{
54+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_guest_order_with_gift_message');
55+
foreach ($this->requestCartResult($maskedQuoteId)['cart']['items'] as $item) {
56+
self::assertArrayHasKey('gift_message', $item);
57+
self::assertNull($item['gift_message']);
58+
}
59+
}
60+
61+
/**
62+
* @param string $quoteId
63+
*
64+
* @return array|bool|float|int|string
65+
* @throws Exception
66+
*/
67+
private function requestCartResult(string $quoteId)
68+
{
3769
$query = <<<QUERY
3870
{
39-
cart(cart_id: "$maskedQuoteId") {
71+
cart(cart_id: "$quoteId") {
4072
items {
4173
product {
4274
name
@@ -52,12 +84,6 @@ public function testGiftMessageCartForItem()
5284
}
5385
}
5486
QUERY;
55-
$response = $this->graphQlQuery($query);
56-
foreach ($response['cart']['items'] as $item) {
57-
self::assertArrayHasKey('gift_message', $item);
58-
self::assertArrayHasKey('to', $item['gift_message']);
59-
self::assertArrayHasKey('from', $item['gift_message']);
60-
self::assertArrayHasKey('message', $item['gift_message']);
61-
}
87+
return $this->graphQlQuery($query);
6288
}
6389
}

0 commit comments

Comments
 (0)