SetLinkStatusObserverTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Downloadable\Model\Observer;
  7. /**
  8. * Integration test for case, when customer is able to download
  9. * downloadable product, after order was canceled.
  10. */
  11. class SetLinkStatusObserverTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * Object manager
  15. * @var \Magento\Framework\ObjectManagerInterface
  16. */
  17. private $objectManager;
  18. /**
  19. * Initialization of dependencies
  20. */
  21. protected function setUp()
  22. {
  23. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  24. }
  25. /**
  26. * Asserting, that links status is expired after canceling of order.
  27. * This test relates to the GitHub issue magento/magento2#8515.
  28. *
  29. * @magentoDataFixture Magento/Downloadable/_files/product_downloadable.php
  30. * @magentoDataFixture Magento/Downloadable/_files/order_with_downloadable_product.php
  31. * @magentoDbIsolation disabled
  32. */
  33. public function testCheckStatusOnOrderCancel()
  34. {
  35. /** @var \Magento\Sales\Model\Order $order */
  36. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
  37. $order->loadByIncrementId('100000001');
  38. $orderItems = $order->getAllItems();
  39. $items = array_values($orderItems);
  40. /** @var \Magento\Sales\Model\Order\Item $orderItem */
  41. $orderItem = array_shift($items);
  42. /** Canceling order to reproduce test case */
  43. $order->setState(\Magento\Sales\Model\Order::STATE_CANCELED);
  44. $order->save();
  45. /** @var \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\Collection $linkCollection */
  46. $linkCollection = $this->objectManager->create(
  47. \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\CollectionFactory::class
  48. )->create();
  49. $linkCollection->addFieldToFilter('order_item_id', $orderItem->getId());
  50. /** Assert there are items in linkCollection to avoid false-positive test result. */
  51. $this->assertGreaterThan(0, $linkCollection->count());
  52. /** @var \Magento\Downloadable\Model\Link\Purchased\Item $linkItem */
  53. foreach ($linkCollection->getItems() as $linkItem) {
  54. $this->assertEquals(
  55. \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_EXPIRED,
  56. $linkItem->getStatus()
  57. );
  58. }
  59. }
  60. }