From 30b5818dde145901eb0a7a0600ef65b9cd9a9cf3 Mon Sep 17 00:00:00 2001 From: lfolco Date: Sat, 7 Dec 2019 15:56:25 -0500 Subject: [PATCH 1/2] Add plugin for SalesOrderItemRepository gift message (#19093) --- .../GiftMessage/Model/Plugin/OrderItemGet.php | 76 +++++++++++++++++++ app/code/Magento/GiftMessage/etc/di.xml | 3 + .../Api/OrderGetRepositoryTest.php | 56 ++++++++++++++ .../Api/OrderItemGetRepositoryTest.php | 69 +++++++++++++++++ 4 files changed, 204 insertions(+) create mode 100644 app/code/Magento/GiftMessage/Model/Plugin/OrderItemGet.php create mode 100644 dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php create mode 100644 dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php diff --git a/app/code/Magento/GiftMessage/Model/Plugin/OrderItemGet.php b/app/code/Magento/GiftMessage/Model/Plugin/OrderItemGet.php new file mode 100644 index 0000000000000..3de69da37eef8 --- /dev/null +++ b/app/code/Magento/GiftMessage/Model/Plugin/OrderItemGet.php @@ -0,0 +1,76 @@ +giftMessageItemRepository = $giftMessageItemRepository; + $this->orderItemExtensionFactory = $orderItemExtensionFactory; + } + + /** + * Add gift message for order item + * + * @param OrderItemRepositoryInterface $subject + * @param OrderItemInterface $orderItem + * @return OrderItemInterface + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function afterGet(OrderItemRepositoryInterface $subject, OrderItemInterface $orderItem) + { + $extensionAttributes = $orderItem->getExtensionAttributes(); + if ($extensionAttributes && $extensionAttributes->getGiftMessage()) { + return $orderItem; + } + try { + /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */ + $giftMessage = $this->giftMessageItemRepository->get( + $orderItem->getOrderId(), + $orderItem->getItemId() + ); + } catch (NoSuchEntityException $e) { + return $orderItem; + } + /** @var \Magento\Sales\Api\Data\OrderItemExtension $orderItemExtension */ + $orderItemExtension = $extensionAttributes ?: $this->orderItemExtensionFactory->create(); + $orderItemExtension->setGiftMessage($giftMessage); + $orderItem->setExtensionAttributes($orderItemExtension); + + return $orderItem; + } +} diff --git a/app/code/Magento/GiftMessage/etc/di.xml b/app/code/Magento/GiftMessage/etc/di.xml index 5333084c90b75..1b079f3c9fd55 100644 --- a/app/code/Magento/GiftMessage/etc/di.xml +++ b/app/code/Magento/GiftMessage/etc/di.xml @@ -37,4 +37,7 @@ + + + diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php new file mode 100644 index 0000000000000..7ae7e200cfb5b --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php @@ -0,0 +1,56 @@ +create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001'); + $orderId = $order->getId(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $orderId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + $expectedMessage = [ + 'recipient' => 'Mercutio', + 'sender' => 'Romeo', + 'message' => 'I thought all for the best.', + ]; + $requestData = ["orderId" => $orderId]; + $result = $this->_webApiCall($serviceInfo, $requestData); + $resultMessage = $result['extension_attributes']['gift_message']; + static::assertCount(5, $resultMessage); + unset($resultMessage['gift_message_id']); + unset($resultMessage['customer_id']); + static::assertEquals($expectedMessage, $resultMessage); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php new file mode 100644 index 0000000000000..f68b50b7746eb --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php @@ -0,0 +1,69 @@ +objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + /** + * @magentoDataFixture Magento/GiftMessage/_files/order_with_message.php + * @magentoConfigFixture default_store sales/gift_options/allow_items 1 + * @magentoAppIsolation enabled + * @magentoDbIsolation disabled + */ + public function testGet() + { + /** @var \Magento\Sales\Model\Order $order */ + $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001'); + $items = $order->getItems(); + /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */ + $orderItem = array_shift($items); + $itemId = $orderItem->getItemId(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $itemId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + $expectedMessage = [ + 'recipient' => 'Mercutio', + 'sender' => 'Romeo', + 'message' => 'I thought all for the best.', + ]; + $requestData = ["orderItemId" => $itemId]; + $result = $this->_webApiCall($serviceInfo, $requestData); + $resultMessage = $result['extension_attributes']['gift_message']; + static::assertCount(5, $resultMessage); + unset($resultMessage['gift_message_id']); + unset($resultMessage['customer_id']); + static::assertEquals($expectedMessage, $resultMessage); + } +} From f076e553211d4e6a4a9ffdd48b0521ab0ee3bf38 Mon Sep 17 00:00:00 2001 From: lfolco Date: Sat, 4 Jan 2020 14:57:30 -0500 Subject: [PATCH 2/2] Update SOAP tests to test changed functionality (#19093) --- .../Api/OrderGetRepositoryTest.php | 6 ++---- .../Api/OrderItemGetRepositoryTest.php | 20 ++++--------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php index 7ae7e200cfb5b..91d1954581da7 100644 --- a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderGetRepositoryTest.php @@ -12,9 +12,7 @@ class OrderGetRepositoryTest extends WebapiAbstract { const SERVICE_VERSION = 'V1'; - - const SERVICE_NAME = 'giftMessageItemRepositoryV1'; - + const SERVICE_NAME = 'salesOrderRepositoryV1'; const RESOURCE_PATH = '/V1/orders/'; /** @@ -45,7 +43,7 @@ public function testGet() 'sender' => 'Romeo', 'message' => 'I thought all for the best.', ]; - $requestData = ["orderId" => $orderId]; + $requestData = ['id' => $orderId]; $result = $this->_webApiCall($serviceInfo, $requestData); $resultMessage = $result['extension_attributes']['gift_message']; static::assertCount(5, $resultMessage); diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php index f68b50b7746eb..074133835f6da 100644 --- a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/OrderItemGetRepositoryTest.php @@ -11,23 +11,10 @@ class OrderItemGetRepositoryTest extends WebapiAbstract { - const SERVICE_VERSION = 'V1'; - - const SERVICE_NAME = 'giftMessageItemRepositoryV1'; - + const SERVICE_NAME = 'salesOrderItemRepositoryV1'; const RESOURCE_PATH = '/V1/orders/items/'; - /** - * @var \Magento\TestFramework\ObjectManager - */ - protected $objectManager; - - protected function setUp() - { - $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); - } - /** * @magentoDataFixture Magento/GiftMessage/_files/order_with_message.php * @magentoConfigFixture default_store sales/gift_options/allow_items 1 @@ -36,8 +23,9 @@ protected function setUp() */ public function testGet() { + $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); /** @var \Magento\Sales\Model\Order $order */ - $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001'); + $order = $objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001'); $items = $order->getItems(); /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */ $orderItem = array_shift($items); @@ -58,7 +46,7 @@ public function testGet() 'sender' => 'Romeo', 'message' => 'I thought all for the best.', ]; - $requestData = ["orderItemId" => $itemId]; + $requestData = ['id' => $itemId]; $result = $this->_webApiCall($serviceInfo, $requestData); $resultMessage = $result['extension_attributes']['gift_message']; static::assertCount(5, $resultMessage);