Skip to content

Commit 6e08640

Browse files
committed
MC-37263: View and edit shopping cart
1 parent e1c5c1d commit 6e08640

File tree

5 files changed

+513
-0
lines changed

5 files changed

+513
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Catalog\Api\ProductRepositoryInterface;
9+
use Magento\Checkout\Model\Type\Onepage;
10+
use Magento\Customer\Api\CustomerRepositoryInterface;
11+
use Magento\Quote\Api\CartRepositoryInterface;
12+
use Magento\Quote\Api\Data\CartInterface;
13+
use Magento\Quote\Api\Data\CartInterfaceFactory;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
16+
17+
Resolver::getInstance()->requireDataFixture('Magento/Customer/_files/customer.php');
18+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/taxable_simple_product.php');
19+
20+
$objectManager = Bootstrap::getObjectManager();
21+
/** @var ProductRepositoryInterface $productRepository */
22+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
23+
$productRepository->cleanCache();
24+
/** @var CartRepositoryInterface $quoteRepository */
25+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
26+
/** @var CustomerRepositoryInterface $customerRepository */
27+
$customerRepository = $objectManager->get(CustomerRepositoryInterface::class);
28+
$customer = $customerRepository->get('customer@example.com');
29+
30+
/** @var CartInterface $quote */
31+
$quote = $objectManager->get(CartInterfaceFactory::class)->create();
32+
$quote->setStoreId(1)
33+
->setIsActive(false)
34+
->setIsMultiShipping(0)
35+
->setCustomer($customer)
36+
->setCheckoutMethod(Onepage::METHOD_CUSTOMER)
37+
->setReservedOrderId('test_order_with_customer_inactive_quote')
38+
->addProduct($productRepository->get('taxable_product'), 1);
39+
$quoteRepository->save($quote);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Quote\Api\CartRepositoryInterface;
9+
use Magento\TestFramework\Helper\Bootstrap;
10+
use Magento\TestFramework\Quote\Model\GetQuoteByReservedOrderId;
11+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
12+
13+
$objectManager = Bootstrap::getObjectManager();
14+
/** @var CartRepositoryInterface $quoteRepository */
15+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
16+
/** @var GetQuoteByReservedOrderId $getQuoteByReservedOrderId */
17+
$getQuoteByReservedOrderId = $objectManager->get(GetQuoteByReservedOrderId::class);
18+
$quote = $getQuoteByReservedOrderId->execute('test_order_with_customer_inactive_quote');
19+
if ($quote !== null) {
20+
$quoteRepository->delete($quote);
21+
}
22+
23+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/taxable_simple_product_rollback.php');
24+
Resolver::getInstance()->requireDataFixture('Magento/Customer/_files/customer_rollback.php');
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Sales\Block\Adminhtml\Order\Create\Items;
9+
10+
use Magento\Backend\Model\Session\Quote;
11+
use Magento\Framework\ObjectManagerInterface;
12+
use Magento\Framework\View\LayoutInterface;
13+
use Magento\Sales\Block\Adminhtml\Order\Create\Items;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use Magento\TestFramework\Quote\Model\GetQuoteByReservedOrderId;
16+
use PHPUnit\Framework\TestCase;
17+
18+
/**
19+
* Checks order items grid
20+
*
21+
* @magentoAppArea adminhtml
22+
* @magentoDbIsolation enabled
23+
*/
24+
class GridTest extends TestCase
25+
{
26+
/** @var ObjectManagerInterface */
27+
private $objectManager;
28+
29+
/** @var LayoutInterface */
30+
private $layout;
31+
32+
/** @var Grid */
33+
private $block;
34+
35+
/** @var Quote */
36+
private $session;
37+
38+
/** @var GetQuoteByReservedOrderId */
39+
private $getQuoteByReservedOrderId;
40+
41+
/**
42+
* @inheritdoc
43+
*/
44+
protected function setUp(): void
45+
{
46+
parent::setUp();
47+
48+
$this->objectManager = Bootstrap::getObjectManager();
49+
$this->getQuoteByReservedOrderId = $this->objectManager->get(GetQuoteByReservedOrderId::class);
50+
$this->session = $this->objectManager->get(Quote::class);
51+
$this->layout = $this->objectManager->get(LayoutInterface::class);
52+
$this->block = $this->layout->createBlock(Grid::class);
53+
$this->layout->createBlock(Items::class)->setChild('items_grid', $this->block);
54+
}
55+
56+
/**
57+
* @magentoDataFixture Magento/Checkout/_files/quote_with_customer_without_address.php
58+
*
59+
* @return void
60+
*/
61+
public function testGetItems(): void
62+
{
63+
$quote = $this->getQuoteByReservedOrderId->execute('test_order_with_customer_without_address');
64+
$this->session->setQuoteId($quote->getId());
65+
$items = $this->block->getItems();
66+
$this->assertCount(1, $items);
67+
$this->assertEquals('simple2', reset($items)->getSku());
68+
}
69+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Sales\Block\Adminhtml\Order\Create\Sidebar;
9+
10+
use Magento\Backend\Model\Session\Quote;
11+
use Magento\Framework\ObjectManagerInterface;
12+
use Magento\Framework\View\LayoutInterface;
13+
use Magento\TestFramework\Helper\Bootstrap;
14+
use PHPUnit\Framework\TestCase;
15+
16+
/**
17+
* Check sidebar shopping cart section block
18+
*
19+
* @see \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart
20+
*
21+
* @magentoAppArea adminhtml
22+
* @magentoDbIsolation enabled
23+
*/
24+
class CartTest extends TestCase
25+
{
26+
/** @var ObjectManagerInterface */
27+
private $objectManager;
28+
29+
/** @var Cart */
30+
private $block;
31+
32+
/** @var Quote */
33+
private $session;
34+
35+
/**
36+
* @inheritdoc
37+
*/
38+
protected function setUp(): void
39+
{
40+
parent::setUp();
41+
42+
$this->objectManager = Bootstrap::getObjectManager();
43+
$this->block = $this->objectManager->get(LayoutInterface::class)->createBlock(Cart::class);
44+
$this->session = $this->objectManager->get(Quote::class);
45+
}
46+
47+
/**
48+
* @inheritdoc
49+
*/
50+
protected function tearDown(): void
51+
{
52+
$this->session->clearStorage();
53+
54+
parent::tearDown();
55+
}
56+
57+
/**
58+
* @magentoDataFixture Magento/Checkout/_files/quote_with_customer_without_address.php
59+
*
60+
* @return void
61+
*/
62+
public function testGetItemCollection(): void
63+
{
64+
$this->session->setCustomerId(1);
65+
$items = $this->block->getItemCollection();
66+
$this->assertCount(1, $items);
67+
$this->assertEquals('simple2', reset($items)->getSku());
68+
}
69+
70+
/**
71+
* @return void
72+
*/
73+
public function testClearShoppingCartButton(): void
74+
{
75+
$confirmation = __('Are you sure you want to delete all items from shopping cart?');
76+
$button = $this->block->getChildBlock('empty_customer_cart_button');
77+
$this->assertEquals(sprintf("order.clearShoppingCart('%s')", $confirmation), $button->getOnclick());
78+
$this->assertEquals(__('Clear Shopping Cart'), $button->getLabel());
79+
}
80+
}

0 commit comments

Comments
 (0)