OrderItemRepositoryTest.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GiftMessage\Model;
  7. class OrderItemRepositoryTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /** @var \Magento\Framework\ObjectManagerInterface */
  10. protected $objectManager;
  11. /** @var \Magento\GiftMessage\Model\Message */
  12. protected $message;
  13. /** @var \Magento\GiftMessage\Model\OrderItemRepository */
  14. protected $giftMessageOrderItemRepository;
  15. protected function setUp()
  16. {
  17. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  18. $this->message = $this->objectManager->create(\Magento\GiftMessage\Model\Message::class);
  19. $this->message->setSender('Romeo');
  20. $this->message->setRecipient('Mercutio');
  21. $this->message->setMessage('I thought all for the best.');
  22. $this->giftMessageOrderItemRepository = $this->objectManager->create(
  23. \Magento\GiftMessage\Model\OrderItemRepository::class
  24. );
  25. }
  26. protected function tearDown()
  27. {
  28. $this->objectManager = null;
  29. $this->message = null;
  30. $this->giftMessageOrderItemRepository = null;
  31. }
  32. /**
  33. * @magentoDataFixture Magento/GiftMessage/_files/order_with_message.php
  34. * @magentoConfigFixture default_store sales/gift_options/allow_items 1
  35. */
  36. public function testGet()
  37. {
  38. /** @var \Magento\Sales\Model\Order $order */
  39. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  40. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  41. $orderItem = $order->getItems();
  42. $orderItem = array_shift($orderItem);
  43. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  44. $message = $this->giftMessageOrderItemRepository->get($order->getEntityId(), $orderItem->getItemId());
  45. $this->assertEquals('Romeo', $message->getSender());
  46. $this->assertEquals('Mercutio', $message->getRecipient());
  47. $this->assertEquals('I thought all for the best.', $message->getMessage());
  48. }
  49. /**
  50. * @magentoDataFixture Magento/GiftMessage/_files/order_with_message.php
  51. * @magentoConfigFixture default_store sales/gift_options/allow_items 1
  52. * @expectedException \Magento\Framework\Exception\NoSuchEntityException
  53. * @expectedExceptionMessage No item with the provided ID was found in the Order. Verify the ID and try again.
  54. */
  55. public function testGetNoProvidedItemId()
  56. {
  57. /** @var \Magento\Sales\Model\Order $order */
  58. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  59. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  60. $orderItem = $order->getItems();
  61. $orderItem = array_shift($orderItem);
  62. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  63. $this->giftMessageOrderItemRepository->get($order->getEntityId(), $orderItem->getItemId() * 10);
  64. }
  65. /**
  66. * @magentoDataFixture Magento/Sales/_files/order.php
  67. * @magentoConfigFixture default_store sales/gift_options/allow_items 1
  68. */
  69. public function testSave()
  70. {
  71. /** @var \Magento\Sales\Model\Order $order */
  72. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  73. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  74. $orderItem = $order->getItems();
  75. $orderItem = array_shift($orderItem);
  76. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  77. $result = $this->giftMessageOrderItemRepository->save(
  78. $order->getEntityId(),
  79. $orderItem->getItemId(),
  80. $this->message
  81. );
  82. $message = $this->giftMessageOrderItemRepository->get($order->getEntityId(), $orderItem->getItemId());
  83. $this->assertTrue($result);
  84. $this->assertEquals('Romeo', $message->getSender());
  85. $this->assertEquals('Mercutio', $message->getRecipient());
  86. $this->assertEquals('I thought all for the best.', $message->getMessage());
  87. }
  88. /**
  89. * @magentoDataFixture Magento/Sales/_files/order.php
  90. * @magentoConfigFixture default_store sales/gift_options/allow_items 0
  91. * @expectedException \Magento\Framework\Exception\CouldNotSaveException
  92. * @expectedExceptionMessage The gift message isn't available.
  93. */
  94. public function testSaveMessageIsNotAvailable()
  95. {
  96. /** @var \Magento\Sales\Model\Order $order */
  97. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  98. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  99. $orderItem = $order->getItems();
  100. $orderItem = array_shift($orderItem);
  101. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  102. $this->giftMessageOrderItemRepository->save($order->getEntityId(), $orderItem->getItemId(), $this->message);
  103. }
  104. /**
  105. * @magentoDataFixture Magento/GiftMessage/_files/virtual_order.php
  106. * @magentoConfigFixture default_store sales/gift_options/allow_items 1
  107. * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
  108. * @expectedExceptionMessage Gift messages can't be used for virtual products.
  109. */
  110. public function testSaveMessageIsVirtual()
  111. {
  112. /** @var \Magento\Sales\Model\Order $order */
  113. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  114. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  115. $orderItem = $order->getItems();
  116. $orderItem = array_shift($orderItem);
  117. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  118. $this->giftMessageOrderItemRepository->save($order->getEntityId(), $orderItem->getItemId(), $this->message);
  119. }
  120. /**
  121. * @magentoDataFixture Magento/GiftMessage/_files/empty_order.php
  122. * @magentoConfigFixture default_store sales/gift_options/allow_items 1
  123. * @expectedException \Magento\Framework\Exception\NoSuchEntityException
  124. * @expectedExceptionMessage No item with the provided ID was found in the Order. Verify the ID and try again.
  125. */
  126. public function testSaveMessageNoProvidedItemId()
  127. {
  128. /** @var \Magento\Sales\Model\Order $order */
  129. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
  130. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  131. $orderItem = $order->getItems();
  132. $orderItem = array_shift($orderItem);
  133. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $message */
  134. $this->giftMessageOrderItemRepository->save(
  135. $order->getEntityId(),
  136. $orderItem->getItemId() * 10,
  137. $this->message
  138. );
  139. }
  140. }