Skip to content

Commit c84b731

Browse files
committed
MC-38655: [GraphQL] Gifting message is not saved in Order
- Missing the event at GraphQL while Gift message saving
1 parent f6c4e1c commit c84b731

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
9+
<event name="sales_model_service_quote_submit_before">
10+
<observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" />
11+
</event>
12+
</config>

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Guest/PlaceOrderTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,45 @@ public function testPlaceOrderOfCustomerCart()
327327
$this->graphQlMutation($query);
328328
}
329329

330+
/**
331+
* Test place order with gift message options
332+
*
333+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
334+
* @magentoConfigFixture default_store carriers/flatrate/active 1
335+
* @magentoConfigFixture default_store carriers/tablerate/active 1
336+
* @magentoConfigFixture default_store carriers/freeshipping/active 1
337+
* @magentoConfigFixture default_store payment/banktransfer/active 1
338+
* @magentoConfigFixture default_store payment/cashondelivery/active 1
339+
* @magentoConfigFixture default_store payment/checkmo/active 1
340+
* @magentoConfigFixture default_store payment/purchaseorder/active 1
341+
* @magentoConfigFixture sales/gift_options/allow_order 1
342+
* @magentoConfigFixture default_store customer/create_account/auto_group_assign 1
343+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
344+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/set_guest_email.php
345+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
346+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_gift_options.php
347+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
348+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_billing_address.php
349+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_flatrate_shipping_method.php
350+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_checkmo_payment_method.php
351+
*/
352+
public function testPlaceOrderWithGiftMessage()
353+
{
354+
$reservedOrderId = 'test_quote';
355+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute($reservedOrderId);
356+
357+
$query = $this->getQuery($maskedQuoteId);
358+
$response = $this->graphQlMutation($query);
359+
360+
self::assertArrayHasKey('placeOrder', $response);
361+
self::assertArrayHasKey('order_number', $response['placeOrder']['order']);
362+
self::assertEquals($reservedOrderId, $response['placeOrder']['order']['order_number']);
363+
$orderIncrementId = $response['placeOrder']['order']['order_number'];
364+
$order = $this->orderFactory->create();
365+
$order->loadByIncrementId($orderIncrementId);
366+
$this->assertNotEmpty($order->getGiftMessageId());
367+
}
368+
330369
/**
331370
* @param string $maskedQuoteId
332371
* @return string
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Quote\Api\CartRepositoryInterface;
9+
use Magento\Quote\Model\QuoteFactory;
10+
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
$objectManager = Bootstrap::getObjectManager();
14+
15+
/** @var QuoteFactory $quoteFactory */
16+
$quoteFactory = $objectManager->get(QuoteFactory::class);
17+
/** @var QuoteResource $quoteResource */
18+
$quoteResource = $objectManager->get(QuoteResource::class);
19+
/** @var CartRepositoryInterface $cartRepository */
20+
$cartRepository = $objectManager->get(CartRepositoryInterface::class);
21+
22+
23+
/** @var \Magento\GiftMessage\Model\Message $message */
24+
$message = $objectManager->create(\Magento\GiftMessage\Model\Message::class);
25+
$message->setSender('Romeo');
26+
$message->setRecipient('Mercutio');
27+
$message->setMessage('I thought all for the best.');
28+
$message->save();
29+
30+
$quote = $quoteFactory->create();
31+
$quoteResource->load($quote, 'test_quote', 'reserved_order_id');
32+
$quote->setGiftMessageId($message->getId());
33+
$cartRepository->save($quote);

0 commit comments

Comments
 (0)