From b25ce414f5b16eedc15d74022efb2227835b9726 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 20 Mar 2018 19:43:19 +0200 Subject: [PATCH 1/2] Fixed place order on default stock test --- ...t.php => PlaceOrderOnDefaultStockTest.php} | 60 ++++--------------- ...hp => PlaceOrderOnNotDefaultStockTest.php} | 2 +- 2 files changed, 11 insertions(+), 51 deletions(-) rename app/code/Magento/InventorySales/Test/Integration/Order/{PlaceOrderOnDefaultSourceTest.php => PlaceOrderOnDefaultStockTest.php} (77%) rename app/code/Magento/InventorySales/Test/Integration/Order/{PlaceOrderOnNotDefaultSourceTest.php => PlaceOrderOnNotDefaultStockTest.php} (99%) diff --git a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultSourceTest.php b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultStockTest.php similarity index 77% rename from app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultSourceTest.php rename to app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultStockTest.php index 83408806b56b9..76f30e0101a62 100644 --- a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultSourceTest.php +++ b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnDefaultStockTest.php @@ -19,19 +19,18 @@ use Magento\Quote\Api\Data\CartInterface; use Magento\Quote\Api\Data\CartItemInterface; use Magento\Quote\Api\Data\CartItemInterfaceFactory; +use Magento\Sales\Api\OrderManagementInterface; use Magento\Sales\Api\OrderRepositoryInterface; use PHPUnit\Framework\TestCase; use Magento\TestFramework\Helper\Bootstrap; use Magento\InventoryCatalog\Api\DefaultStockProviderInterface; use Magento\InventoryReservations\Model\CleanupReservationsInterface; -use Magento\InventoryReservations\Model\ReservationBuilderInterface; -use Magento\InventoryReservationsApi\Api\AppendReservationsInterface; use Magento\Catalog\Api\ProductRepositoryInterface; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ -class PlaceOrderOnDefaultSourceTest extends TestCase +class PlaceOrderOnDefaultStockTest extends TestCase { /** * @var DefaultStockProviderInterface @@ -63,16 +62,6 @@ class PlaceOrderOnDefaultSourceTest extends TestCase */ private $cartItemFactory; - /** - * @var AppendReservationsInterface - */ - private $appendReservations; - - /** - * @var ReservationBuilderInterface - */ - private $reservationBuilder; - /** * @var SearchCriteriaBuilder */ @@ -88,6 +77,11 @@ class PlaceOrderOnDefaultSourceTest extends TestCase */ private $registry; + /** + * @var OrderManagementInterface + */ + private $orderManagement; + protected function setUp() { $this->registry = Bootstrap::getObjectManager()->get(Registry::class); @@ -98,9 +92,8 @@ protected function setUp() $this->cartItemFactory = Bootstrap::getObjectManager()->get(CartItemInterfaceFactory::class); $this->defaultStockProvider = Bootstrap::getObjectManager()->get(DefaultStockProviderInterface::class); $this->cleanupReservations = Bootstrap::getObjectManager()->get(CleanupReservationsInterface::class); - $this->appendReservations = Bootstrap::getObjectManager()->get(AppendReservationsInterface::class); - $this->reservationBuilder = Bootstrap::getObjectManager()->get(ReservationBuilderInterface::class); $this->orderRepository = Bootstrap::getObjectManager()->get(OrderRepositoryInterface::class); + $this->orderManagement = Bootstrap::getObjectManager()->get(OrderManagementInterface::class); } /** @@ -115,12 +108,8 @@ protected function setUp() */ public function testPlaceOrderWithInStockProduct() { - $this->markTestSkipped( - 'Fix Integration Test for placing Order https://github.com/magento-engcom/msi/issues/687' - ); $sku = 'SKU-1'; $quoteItemQty = 3.8; - $reservedDuringCheckoutQty = 1.5; $cart = $this->getCart(); $product = $this->productRepository->get($sku); @@ -139,14 +128,11 @@ public function testPlaceOrderWithInStockProduct() $cart->addItem($cartItem); $this->cartRepository->save($cart); - $this->appendReservation($sku, -$reservedDuringCheckoutQty); - $orderId = $this->cartManagement->placeOrder($cart->getId()); self::assertNotNull($orderId); //cleanup - $this->appendReservation($sku, $reservedDuringCheckoutQty); $this->deleteOrderById((int)$orderId); } @@ -162,12 +148,8 @@ public function testPlaceOrderWithInStockProduct() */ public function testPlaceOrderWithOutOffStockProduct() { - $this->markTestSkipped( - 'Fix Integration Test for placing Order https://github.com/magento-engcom/msi/issues/687' - ); $sku = 'SKU-1'; - $quoteItemQty = 5.5; - $reservedDuringCheckoutQty = 4.9; + $quoteItemQty = 8.7; $cart = $this->getCart(); $product = $this->productRepository->get($sku); @@ -186,33 +168,10 @@ public function testPlaceOrderWithOutOffStockProduct() $cart->addItem($cartItem); $this->cartRepository->save($cart); - //append reservation during checkout to make laking quantity in stock - $this->appendReservation($sku, -$reservedDuringCheckoutQty); - self::expectException(LocalizedException::class); $orderId = $this->cartManagement->placeOrder($cart->getId()); self::assertNull($orderId); - - //cleanup - $this->appendReservation($sku, $reservedDuringCheckoutQty); - } - - /** - * @param string $productSku - * @param float $qty - * @return void - * @throws \Magento\Framework\Exception\CouldNotSaveException - * @throws \Magento\Framework\Exception\InputException - * @throws \Magento\Framework\Validation\ValidationException - */ - private function appendReservation(string $productSku, float $qty) - { - $this->appendReservations->execute([ - $this->reservationBuilder->setStockId( - $this->defaultStockProvider->getId() - )->setSku($productSku)->setQuantity($qty)->build(), - ]); } /** @@ -238,6 +197,7 @@ private function deleteOrderById(int $orderId) { $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', true); + $this->orderManagement->cancel($orderId); $this->orderRepository->delete($this->orderRepository->get($orderId)); $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', false); diff --git a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultSourceTest.php b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php similarity index 99% rename from app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultSourceTest.php rename to app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php index 0c7812d3f442c..07e149a45b7d0 100644 --- a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultSourceTest.php +++ b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php @@ -35,7 +35,7 @@ /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ -class PlaceOrderOnNotDefaultSourceTest extends TestCase +class PlaceOrderOnNotDefaultStockTest extends TestCase { /** * @var CleanupReservationsInterface From f70c9d4557d208295b0c8638aee32e08b5d7f8aa Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 20 Mar 2018 20:17:45 +0200 Subject: [PATCH 2/2] Fixed place order on not default stock test --- .../Order/PlaceOrderOnNotDefaultStockTest.php | 77 ++++++------------- 1 file changed, 22 insertions(+), 55 deletions(-) diff --git a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php index 07e149a45b7d0..68484f97770af 100644 --- a/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php +++ b/app/code/Magento/InventorySales/Test/Integration/Order/PlaceOrderOnNotDefaultStockTest.php @@ -21,14 +21,14 @@ use Magento\Quote\Api\Data\CartInterface; use Magento\Quote\Api\Data\CartItemInterface; use Magento\Quote\Api\Data\CartItemInterfaceFactory; +use Magento\Sales\Api\OrderManagementInterface; use Magento\Sales\Api\OrderRepositoryInterface; use Magento\Store\Api\Data\StoreInterface; use Magento\Store\Api\StoreRepositoryInterface; +use Magento\Store\Model\StoreManagerInterface; use PHPUnit\Framework\TestCase; use Magento\TestFramework\Helper\Bootstrap; use Magento\InventoryReservations\Model\CleanupReservationsInterface; -use Magento\InventoryReservations\Model\ReservationBuilderInterface; -use Magento\InventoryReservationsApi\Api\AppendReservationsInterface; use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\InventoryApi\Api\StockRepositoryInterface; @@ -62,16 +62,6 @@ class PlaceOrderOnNotDefaultStockTest extends TestCase */ private $cartItemFactory; - /** - * @var AppendReservationsInterface - */ - private $appendReservations; - - /** - * @var ReservationBuilderInterface - */ - private $reservationBuilder; - /** * @var StockRepositoryInterface */ @@ -97,20 +87,30 @@ class PlaceOrderOnNotDefaultStockTest extends TestCase */ private $registry; + /** + * @var OrderManagementInterface + */ + private $orderManagement; + + /** + * @var StoreManagerInterface + */ + private $storeManager; + protected function setUp() { $this->registry = Bootstrap::getObjectManager()->get(Registry::class); $this->stockRepository = Bootstrap::getObjectManager()->get(StockRepositoryInterface::class); $this->storeRepository = Bootstrap::getObjectManager()->get(StoreRepositoryInterface::class); + $this->storeManager = Bootstrap::getObjectManager()->get(StoreManagerInterface::class); $this->cartManagement = Bootstrap::getObjectManager()->get(CartManagementInterface::class); $this->cartRepository = Bootstrap::getObjectManager()->get(CartRepositoryInterface::class); $this->productRepository = Bootstrap::getObjectManager()->get(ProductRepositoryInterface::class); $this->searchCriteriaBuilder = Bootstrap::getObjectManager()->get(SearchCriteriaBuilder::class); $this->cartItemFactory = Bootstrap::getObjectManager()->get(CartItemInterfaceFactory::class); $this->cleanupReservations = Bootstrap::getObjectManager()->get(CleanupReservationsInterface::class); - $this->appendReservations = Bootstrap::getObjectManager()->get(AppendReservationsInterface::class); - $this->reservationBuilder = Bootstrap::getObjectManager()->get(ReservationBuilderInterface::class); $this->orderRepository = Bootstrap::getObjectManager()->get(OrderRepositoryInterface::class); + $this->orderManagement = Bootstrap::getObjectManager()->get(OrderManagementInterface::class); } /** @@ -130,13 +130,9 @@ protected function setUp() */ public function testPlaceOrderWithInStockProduct() { - $this->markTestSkipped( - 'Fix Integration Test for placing Order https://github.com/magento-engcom/msi/issues/687' - ); - $sku = 'SKU-1'; - $stockId = 10; - $quoteItemQty = 4; - $reservedDuringCheckoutQty = 1.5; + $sku = 'SKU-2'; + $stockId = 30; + $quoteItemQty = 2.2; $cart = $this->getCartByStockId($stockId); $product = $this->productRepository->get($sku); @@ -154,15 +150,10 @@ public function testPlaceOrderWithInStockProduct() ); $cart->addItem($cartItem); $this->cartRepository->save($cart); - - $this->appendReservation($sku, -$reservedDuringCheckoutQty, $stockId); - $orderId = $this->cartManagement->placeOrder($cart->getId()); self::assertNotNull($orderId); - //cleanup - $this->appendReservation($sku, $reservedDuringCheckoutQty, $stockId); $this->deleteOrderById((int)$orderId); } @@ -183,13 +174,9 @@ public function testPlaceOrderWithInStockProduct() */ public function testPlaceOrderWithOutOffStockProduct() { - $this->markTestSkipped( - 'Fix Integration Test for placing Order https://github.com/magento-engcom/msi/issues/687' - ); - $sku = 'SKU-1'; - $stockId = 10; - $quoteItemQty = 4; - $reservedDuringCheckoutQty = 3.8; + $sku = 'SKU-2'; + $stockId = 30; + $quoteItemQty = 6.2; $cart = $this->getCartByStockId($stockId); $product = $this->productRepository->get($sku); @@ -208,32 +195,10 @@ public function testPlaceOrderWithOutOffStockProduct() $cart->addItem($cartItem); $this->cartRepository->save($cart); - //append reservation during checkout to make laking quantity in stock - $this->appendReservation($sku, -$reservedDuringCheckoutQty, $stockId); - self::expectException(LocalizedException::class); $orderId = $this->cartManagement->placeOrder($cart->getId()); self::assertNull($orderId); - - //cleanup - $this->appendReservation($sku, $reservedDuringCheckoutQty, $stockId); - } - - /** - * @param string $productSku - * @param float $qty - * @param int $stockId - * @return void - * @throws CouldNotSaveException - * @throws InputException - * @throws ValidationException - */ - private function appendReservation(string $productSku, float $qty, int $stockId) - { - $this->appendReservations->execute([ - $this->reservationBuilder->setStockId($stockId)->setSku($productSku)->setQuantity($qty)->build(), - ]); } /** @@ -261,6 +226,7 @@ private function getCartByStockId(int $stockId): CartInterface } /** @var StoreInterface $store */ $store = $this->storeRepository->get($storeCode); + $this->storeManager->setCurrentStore($storeCode); $cart->setStoreId($store->getId()); return $cart; @@ -273,6 +239,7 @@ private function deleteOrderById(int $orderId) { $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', true); + $this->orderManagement->cancel($orderId); $this->orderRepository->delete($this->orderRepository->get($orderId)); $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', false);