CartRepositoryTest.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GiftMessage\Api;
  7. use Magento\TestFramework\TestCase\WebapiAbstract;
  8. class CartRepositoryTest extends WebapiAbstract
  9. {
  10. const SERVICE_VERSION = 'V1';
  11. const SERVICE_NAME = 'giftMessageCartRepositoryV1';
  12. const RESOURCE_PATH = '/V1/carts/';
  13. /**
  14. * @var \Magento\TestFramework\ObjectManager
  15. */
  16. protected $objectManager;
  17. protected function setUp()
  18. {
  19. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  20. }
  21. /**
  22. * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_message.php
  23. * @magentoAppIsolation enabled
  24. * @magentoDbIsolation disabled
  25. */
  26. public function testGet()
  27. {
  28. /** @var \Magento\Quote\Model\Quote $quote */
  29. $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class);
  30. $quote->load('message_order_21', 'reserved_order_id');
  31. $cartId = $quote->getId();
  32. $serviceInfo = [
  33. 'rest' => [
  34. 'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message',
  35. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  36. ],
  37. 'soap' => [
  38. 'service' => self::SERVICE_NAME,
  39. 'serviceVersion' => self::SERVICE_VERSION,
  40. 'operation' => self::SERVICE_NAME . 'Get',
  41. ],
  42. ];
  43. $expectedMessage = [
  44. 'recipient' => 'Mercutio',
  45. 'sender' => 'Romeo',
  46. 'message' => 'I thought all for the best.',
  47. ];
  48. $requestData = ["cartId" => $cartId];
  49. $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
  50. $this->assertCount(5, $resultMessage);
  51. unset($resultMessage['gift_message_id']);
  52. unset($resultMessage['customer_id']);
  53. $this->assertEquals($expectedMessage, $resultMessage);
  54. }
  55. /**
  56. * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_customer_and_message.php
  57. */
  58. public function testGetForMyCart()
  59. {
  60. $this->_markTestAsRestOnly();
  61. // get customer ID token
  62. /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
  63. $customerTokenService = $this->objectManager->create(
  64. \Magento\Integration\Api\CustomerTokenServiceInterface::class
  65. );
  66. $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
  67. $serviceInfo = [
  68. 'rest' => [
  69. 'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message',
  70. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  71. 'token' => $token,
  72. ],
  73. ];
  74. $expectedMessage = [
  75. 'recipient' => 'Mercutio',
  76. 'sender' => 'Romeo',
  77. 'message' => 'I thought all for the best.',
  78. ];
  79. $requestData = [];
  80. $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
  81. $this->assertCount(5, $resultMessage);
  82. unset($resultMessage['gift_message_id']);
  83. unset($resultMessage['customer_id']);
  84. $this->assertEquals($expectedMessage, $resultMessage);
  85. }
  86. /**
  87. * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
  88. */
  89. public function testSave()
  90. {
  91. // sales/gift_options/allow_order must be set to 1 in system configuration
  92. // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
  93. $this->markTestIncomplete('This test relies on system configuration state.');
  94. /** @var \Magento\Quote\Model\Quote $quote */
  95. $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class);
  96. $quote->load('test_order_item_with_message', 'reserved_order_id');
  97. $cartId = $quote->getId();
  98. $serviceInfo = [
  99. 'rest' => [
  100. 'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message',
  101. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
  102. ],
  103. 'soap' => [
  104. 'service' => self::SERVICE_NAME,
  105. 'serviceVersion' => self::SERVICE_VERSION,
  106. 'operation' => self::SERVICE_NAME . 'Save',
  107. ],
  108. ];
  109. $requestData = [
  110. 'cartId' => $cartId,
  111. 'giftMessage' => [
  112. 'recipient' => 'John Doe',
  113. 'sender' => 'Jane Roe',
  114. 'message' => 'Gift Message Text New',
  115. ],
  116. ];
  117. $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
  118. $quote->load('test_order_item_with_message', 'reserved_order_id');
  119. $quote->getGiftMessageId();
  120. /** @var \Magento\GiftMessage\Model\Message $message */
  121. $message = $this->objectManager->create(\Magento\GiftMessage\Model\Message::class)
  122. ->load($quote->getGiftMessageId());
  123. $this->assertEquals('John Doe', $message->getRecipient());
  124. $this->assertEquals('Jane Roe', $message->getSender());
  125. $this->assertEquals('Gift Message Text New', $message->getMessage());
  126. }
  127. /**
  128. * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
  129. */
  130. public function testSaveForMyCart()
  131. {
  132. $this->_markTestAsRestOnly();
  133. // get customer ID token
  134. /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
  135. $customerTokenService = $this->objectManager->create(
  136. \Magento\Integration\Api\CustomerTokenServiceInterface::class
  137. );
  138. $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
  139. // sales/gift_options/allow_order must be set to 1 in system configuration
  140. // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
  141. $this->markTestIncomplete('This test relies on system configuration state.');
  142. $serviceInfo = [
  143. 'rest' => [
  144. 'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message',
  145. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
  146. 'token' => $token,
  147. ],
  148. ];
  149. $requestData = [
  150. 'giftMessage' => [
  151. 'recipient' => 'John Doe',
  152. 'sender' => 'Jane Roe',
  153. 'message' => 'Gift Message Text New',
  154. ],
  155. ];
  156. $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
  157. /** @var \Magento\Quote\Model\Quote $quote */
  158. $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class);
  159. $quote->load('test_order_item_with_message', 'reserved_order_id');
  160. $quote->getGiftMessageId();
  161. /** @var \Magento\GiftMessage\Model\Message $message */
  162. $message = $this->objectManager->create(\Magento\GiftMessage\Model\Message::class)
  163. ->load($quote->getGiftMessageId());
  164. $this->assertEquals('John Doe', $message->getRecipient());
  165. $this->assertEquals('Jane Roe', $message->getSender());
  166. $this->assertEquals('Gift Message Text New', $message->getMessage());
  167. }
  168. }