Skip to content

Commit ed89465

Browse files
committed
MC-35968: Admin: Add items to shopping cart from different sources (advanced checkout)
1 parent 5a95d1f commit ed89465

21 files changed

+692
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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\Model\Product\Compare\ListCompare;
9+
use Magento\Catalog\Model\Product\Compare\ListCompareFactory;
10+
use Magento\Customer\Model\Session;
11+
use Magento\Customer\Model\Visitor;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
14+
require __DIR__ . '/second_product_simple.php';
15+
require __DIR__ . '/../../Customer/_files/customer.php';
16+
17+
$objectManager = Bootstrap::getObjectManager();
18+
/** @var Session $session */
19+
$session = $objectManager->get(Session::class);
20+
21+
try {
22+
$session->loginById(1);
23+
/** @var Visitor $visitor */
24+
$visitor = $objectManager->get(Visitor::class);
25+
$visitor->setVisitorId(1);
26+
/** @var ListCompare $compareList */
27+
$compareList = $objectManager->get(ListCompareFactory::class)->create();
28+
$compareList->addProduct(6);
29+
} finally {
30+
$session->logout();
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
require __DIR__ . '/../../Customer/_files/customer_rollback.php';
9+
require __DIR__ . '/second_product_simple_rollback.php';
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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\Data\ProductInterface;
9+
use Magento\Catalog\Api\Data\ProductInterfaceFactory;
10+
use Magento\Catalog\Api\ProductRepositoryInterface;
11+
use Magento\Catalog\Helper\DefaultCategory;
12+
use Magento\Catalog\Model\Product\Attribute\Source\Status;
13+
use Magento\Catalog\Model\Product\Type;
14+
use Magento\Catalog\Model\Product\Visibility;
15+
use Magento\Store\Api\WebsiteRepositoryInterface;
16+
use Magento\TestFramework\Helper\Bootstrap;
17+
18+
$objectManager = Bootstrap::getObjectManager();
19+
/** @var WebsiteRepositoryInterface $websiteRepository */
20+
$websiteRepository = $objectManager->get(WebsiteRepositoryInterface::class);
21+
$defaultWebsiteId = $websiteRepository->get('base')->getId();
22+
/** @var DefaultCategory $defaultCategory */
23+
$defaultCategory = $objectManager->get(DefaultCategory::class);
24+
/** @var ProductRepositoryInterface $productRepository */
25+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
26+
$productRepository->cleanCache();
27+
/** @var ProductInterfaceFactory $productFactory */
28+
$productFactory = $objectManager->get(ProductInterfaceFactory::class);
29+
$product = $productFactory->create();
30+
$productData = [
31+
ProductInterface::TYPE_ID => Type::TYPE_SIMPLE,
32+
ProductInterface::ATTRIBUTE_SET_ID => $product->getDefaultAttributeSetId(),
33+
ProductInterface::SKU => 'taxable_product',
34+
ProductInterface::NAME => 'Taxable Product',
35+
ProductInterface::PRICE => 10,
36+
ProductInterface::VISIBILITY => Visibility::VISIBILITY_BOTH,
37+
ProductInterface::STATUS => Status::STATUS_ENABLED,
38+
'website_ids' => [$defaultWebsiteId],
39+
'stock_data' => [
40+
'use_config_manage_stock' => 1,
41+
'qty' => 100,
42+
'is_qty_decimal' => 0,
43+
'is_in_stock' => 1,
44+
],
45+
'category_ids' => [$defaultCategory->getId()],
46+
'tax_class_id' => 2, //Taxable Goods
47+
];
48+
$product->setData($productData);
49+
50+
$productRepository->save($product);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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\Framework\Exception\NoSuchEntityException;
10+
use Magento\Framework\Registry;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
$objectManager = Bootstrap::getObjectManager();
14+
/** @var Registry $registry */
15+
$registry = $objectManager->get(Registry::class);
16+
/** @var ProductRepositoryInterface $productRepository */
17+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
18+
$productRepository->cleanCache();
19+
$registry->unregister('isSecureArea');
20+
$registry->register('isSecureArea', true);
21+
22+
try {
23+
$productRepository->deleteById('taxable_product');
24+
} catch (NoSuchEntityException $e) {
25+
// product already deleted
26+
}
27+
28+
$registry->unregister('isSecureArea');
29+
$registry->register('isSecureArea', false);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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\AddressRepositoryInterface;
11+
use Magento\Customer\Api\CustomerRepositoryInterface;
12+
use Magento\Quote\Api\CartRepositoryInterface;
13+
use Magento\Quote\Api\Data\AddressInterface;
14+
use Magento\Quote\Api\Data\AddressInterfaceFactory;
15+
use Magento\Quote\Api\Data\CartInterface;
16+
use Magento\Quote\Api\Data\CartInterfaceFactory;
17+
use Magento\TestFramework\Helper\Bootstrap;
18+
19+
require __DIR__ . '/../../Customer/_files/customer.php';
20+
require __DIR__ . '/../../Customer/_files/customer_address.php';
21+
require __DIR__ . '/../../../Magento/Catalog/_files/simple_products_not_visible_individually.php';
22+
23+
$objectManager = Bootstrap::getObjectManager();
24+
/** @var ProductRepositoryInterface $productRepository */
25+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
26+
/** @var CartRepositoryInterface $quoteRepository */
27+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
28+
/** @var AddressInterface $quoteShippingAddress */
29+
$quoteShippingAddress = $objectManager->get(AddressInterfaceFactory::class)->create();
30+
/** @var CustomerRepositoryInterface $customerRepository */
31+
$customerRepository = $objectManager->get(CustomerRepositoryInterface::class);
32+
/** @var AddressRepositoryInterface $addressRepository */
33+
$addressRepository = $objectManager->get(AddressRepositoryInterface::class);
34+
$quoteShippingAddress->importCustomerAddressData($addressRepository->getById(1));
35+
$customer = $customerRepository->getById(1);
36+
37+
/** @var CartInterface $quote */
38+
$quote = $objectManager->get(CartInterfaceFactory::class)->create();
39+
$quote->setStoreId(1)
40+
->setIsActive(true)
41+
->setIsMultiShipping(0)
42+
->assignCustomerWithAddressChange($customer)
43+
->setShippingAddress($quoteShippingAddress)
44+
->setBillingAddress($quoteShippingAddress)
45+
->setCheckoutMethod(Onepage::METHOD_CUSTOMER)
46+
->setReservedOrderId('test_order_with_not_visible_product')
47+
->setEmail($customer->getEmail())
48+
->addProduct($productRepository->get('simple_not_visible_1'), 1);
49+
50+
$quoteRepository->save($quote);
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+
12+
$objectManager = Bootstrap::getObjectManager();
13+
/** @var CartRepositoryInterface $quoteRepository */
14+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
15+
/** @var GetQuoteByReservedOrderId $getQuoteByReservedOrderId */
16+
$getQuoteByReservedOrderId = $objectManager->get(GetQuoteByReservedOrderId::class);
17+
$quote = $getQuoteByReservedOrderId->execute('test_order_with_not_visible_product');
18+
if ($quote) {
19+
$quoteRepository->delete($quote);
20+
}
21+
22+
require __DIR__ . '/../../../Magento/Catalog/_files/simple_products_not_visible_individually_rollback.php';
23+
require __DIR__ . '/../../Customer/_files/customer_address_rollback.php';
24+
require __DIR__ . '/../../Customer/_files/customer_rollback.php';
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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\AddressRepositoryInterface;
11+
use Magento\Customer\Api\CustomerRepositoryInterface;
12+
use Magento\Quote\Api\CartRepositoryInterface;
13+
use Magento\Quote\Api\Data\AddressInterface;
14+
use Magento\Quote\Api\Data\AddressInterfaceFactory;
15+
use Magento\Quote\Api\Data\CartInterface;
16+
use Magento\Quote\Api\Data\CartInterfaceFactory;
17+
use Magento\TestFramework\Helper\Bootstrap;
18+
19+
require __DIR__ . '/../../Customer/_files/customer.php';
20+
require __DIR__ . '/../../Customer/_files/customer_address.php';
21+
require __DIR__ . '/../../../Magento/Catalog/_files/taxable_simple_product.php';
22+
23+
$objectManager = Bootstrap::getObjectManager();
24+
/** @var ProductRepositoryInterface $productRepository */
25+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
26+
$productRepository->cleanCache();
27+
/** @var CartRepositoryInterface $quoteRepository */
28+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
29+
/** @var AddressInterface $quoteShippingAddress */
30+
$quoteShippingAddress = $objectManager->get(AddressInterfaceFactory::class)->create();
31+
/** @var CustomerRepositoryInterface $customerRepository */
32+
$customerRepository = $objectManager->get(CustomerRepositoryInterface::class);
33+
/** @var AddressRepositoryInterface $addressRepository */
34+
$addressRepository = $objectManager->get(AddressRepositoryInterface::class);
35+
$quoteShippingAddress->importCustomerAddressData($addressRepository->getById(1));
36+
$customer = $customerRepository->getById(1);
37+
38+
/** @var CartInterface $quote */
39+
$quote = $objectManager->get(CartInterfaceFactory::class)->create();
40+
$quote->setStoreId(1)
41+
->setIsActive(true)
42+
->setIsMultiShipping(0)
43+
->assignCustomerWithAddressChange($customer)
44+
->setShippingAddress($quoteShippingAddress)
45+
->setBillingAddress($quoteShippingAddress)
46+
->setCheckoutMethod(Onepage::METHOD_CUSTOMER)
47+
->setReservedOrderId('test_order_with_taxable_product')
48+
->setEmail($customer->getEmail())
49+
->addProduct($productRepository->get('taxable_product'), 1);
50+
$quoteRepository->save($quote);
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+
12+
$objectManager = Bootstrap::getObjectManager();
13+
/** @var CartRepositoryInterface $quoteRepository */
14+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
15+
/** @var GetQuoteByReservedOrderId $getQuoteByReservedOrderId */
16+
$getQuoteByReservedOrderId = $objectManager->get(GetQuoteByReservedOrderId::class);
17+
$quote = $getQuoteByReservedOrderId->execute('test_order_with_taxable_product');
18+
if ($quote) {
19+
$quoteRepository->delete($quote);
20+
}
21+
22+
require __DIR__ . '/../../../Magento/Catalog/_files/taxable_simple_product_rollback.php';
23+
require __DIR__ . '/../../Customer/_files/customer_address_rollback.php';
24+
require __DIR__ . '/../../Customer/_files/customer_rollback.php';
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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\Customer\Model\Session;
10+
use Magento\Framework\App\Config\MutableScopeConfigInterface;
11+
use Magento\Framework\DataObject;
12+
use Magento\Framework\Event\Observer;
13+
use Magento\Reports\Observer\CatalogProductCompareAddProductObserver;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
16+
require __DIR__ . '/../../../Magento/Catalog/_files/out_of_stock_product_with_category.php';
17+
require __DIR__ . '/../../Customer/_files/customer.php';
18+
19+
$objectManager = Bootstrap::getObjectManager();
20+
/** @var ProductRepositoryInterface $productRepository */
21+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
22+
$productRepository->cleanCache();
23+
$product = $productRepository->get('out-of-stock-product');
24+
$session = $objectManager->get(Session::class);
25+
/** @var CatalogProductCompareAddProductObserver $reportObserver */
26+
$reportObserver = $objectManager->get(CatalogProductCompareAddProductObserver::class);
27+
/** @var MutableScopeConfigInterface $config */
28+
$config = $objectManager->get(MutableScopeConfigInterface::class);
29+
$originValues = [
30+
'reports/options/enabled' => $config->getValue('reports/options/enabled'),
31+
'reports/options/product_compare_enabled' => $config->getValue('reports/options/product_compare_enabled'),
32+
];
33+
34+
try {
35+
$config->setValue('reports/options/enabled', 1);
36+
$config->setValue('reports/options/product_compare_enabled', 1);
37+
$session->loginById(1);
38+
$reportObserver->execute(
39+
new Observer(
40+
[
41+
'event' => new DataObject(
42+
[
43+
'product' => new DataObject(['id' => $product->getId()]),
44+
]
45+
),
46+
]
47+
)
48+
);
49+
} finally {
50+
$session->logout();
51+
foreach ($originValues as $key => $value) {
52+
$config->setValue($key, $value);
53+
}
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
require __DIR__ . '/../../../Magento/Catalog/_files/out_of_stock_product_with_category.php';
9+
require __DIR__ . '/../../Customer/_files/customer_rollback.php';

0 commit comments

Comments
 (0)