SetToZeroLegacyStockItemAtSourceItemsDeleteTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventoryCatalog\Test\Integration;
  8. use Magento\Catalog\Api\ProductRepositoryInterface;
  9. use Magento\Framework\Api\SearchCriteriaBuilder;
  10. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  11. use Magento\InventoryApi\Api\SourceItemRepositoryInterface;
  12. use Magento\InventoryApi\Api\SourceItemsDeleteInterface;
  13. use Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface;
  14. use PHPUnit\Framework\TestCase;
  15. use Magento\TestFramework\Helper\Bootstrap;
  16. use Magento\CatalogInventory\Api\StockItemRepositoryInterface;
  17. use Magento\CatalogInventory\Api\StockItemCriteriaInterface;
  18. use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory;
  19. class SetToZeroLegacyStockItemAtSourceItemsDeleteTest extends TestCase
  20. {
  21. /**
  22. * @var ProductRepositoryInterface
  23. */
  24. private $productRepository;
  25. /**
  26. * @var StockItemCriteriaInterfaceFactory
  27. */
  28. private $legacyStockItemCriteriaFactory;
  29. /**
  30. * @var StockItemRepositoryInterface
  31. */
  32. private $legacyStockItemRepository;
  33. /**
  34. * @var SearchCriteriaBuilder
  35. */
  36. private $searchCriteriaBuilder;
  37. /**
  38. * @var SourceItemRepositoryInterface
  39. */
  40. private $sourceItemRepository;
  41. /**
  42. * @var SourceItemsDeleteInterface
  43. */
  44. private $sourceItemsDelete;
  45. /**
  46. * @var DefaultSourceProviderInterface
  47. */
  48. private $defaultSourceProvider;
  49. protected function setUp()
  50. {
  51. $this->productRepository = Bootstrap::getObjectManager()->get(ProductRepositoryInterface::class);
  52. $this->legacyStockItemCriteriaFactory = Bootstrap::getObjectManager()->get(
  53. StockItemCriteriaInterfaceFactory::class
  54. );
  55. $this->legacyStockItemRepository = Bootstrap::getObjectManager()->get(StockItemRepositoryInterface::class);
  56. $this->searchCriteriaBuilder = Bootstrap::getObjectManager()->get(SearchCriteriaBuilder::class);
  57. $this->sourceItemRepository = Bootstrap::getObjectManager()->get(SourceItemRepositoryInterface::class);
  58. $this->sourceItemsDelete = Bootstrap::getObjectManager()->get(SourceItemsDeleteInterface::class);
  59. $this->defaultSourceProvider = Bootstrap::getObjectManager()->get(DefaultSourceProviderInterface::class);
  60. }
  61. /**
  62. * @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php
  63. * @magentoDataFixture ../../../../app/code/Magento/InventoryCatalog/Test/_files/source_items_on_default_source.php
  64. * @magentoDataFixture ../../../../app/code/Magento/InventoryIndexer/Test/_files/reindex_inventory.php
  65. */
  66. public function testSetToZero()
  67. {
  68. $productSku = 'SKU-1';
  69. $product = $this->productRepository->get($productSku);
  70. $productId = $product->getId();
  71. $websiteId = 0;
  72. /** @var StockItemCriteriaInterface $legacyStockItemCriteria */
  73. $legacyStockItemCriteria = $this->legacyStockItemCriteriaFactory->create();
  74. $legacyStockItemCriteria->setProductsFilter($productId);
  75. $legacyStockItemCriteria->setScopeFilter($websiteId);
  76. $legacyStockItems = $this->legacyStockItemRepository->getList($legacyStockItemCriteria)->getItems();
  77. self::assertCount(1, $legacyStockItems);
  78. $legacyStockItem = reset($legacyStockItems);
  79. self::assertTrue($legacyStockItem->getIsInStock());
  80. self::assertEquals(5.5, $legacyStockItem->getQty());
  81. $searchCriteria = $this->searchCriteriaBuilder
  82. ->addFilter(SourceItemInterface::SKU, $productSku)
  83. ->addFilter(SourceItemInterface::SOURCE_CODE, $this->defaultSourceProvider->getCode())
  84. ->create();
  85. $sourceItems = $this->sourceItemRepository->getList($searchCriteria)->getItems();
  86. self::assertCount(1, $sourceItems);
  87. $this->sourceItemsDelete->execute($sourceItems);
  88. $legacyStockItems = $this->legacyStockItemRepository->getList($legacyStockItemCriteria)->getItems();
  89. self::assertCount(1, $legacyStockItems);
  90. $legacyStockItem = reset($legacyStockItems);
  91. self::assertFalse($legacyStockItem->getIsInStock());
  92. self::assertEquals(0, $legacyStockItem->getQty());
  93. }
  94. }