126 lines
3.6 KiB
PHP
Executable File
126 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Checkout\ViewModel;
|
|
|
|
use Magento\Framework\App\Config\MutableScopeConfigInterface;
|
|
use Magento\Framework\ObjectManagerInterface;
|
|
use Magento\Store\Model\ScopeInterface;
|
|
use Magento\Store\Model\StoreManagerInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Test for clear shopping cart config
|
|
*
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
*/
|
|
class CartTest extends TestCase
|
|
{
|
|
/**
|
|
* @var ObjectManagerInterface
|
|
*/
|
|
private $objectManager;
|
|
|
|
/**
|
|
* @var Cart
|
|
*/
|
|
private $cart;
|
|
|
|
/**
|
|
* @var MutableScopeConfigInterface
|
|
*/
|
|
private $mutableScopeConfig;
|
|
|
|
/**
|
|
* @var StoreManagerInterface
|
|
*/
|
|
private $storeManager;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
$objectManager = $this->objectManager = Bootstrap::getObjectManager();
|
|
$this->cart = $objectManager->get(Cart::class);
|
|
$this->mutableScopeConfig = $objectManager->get(MutableScopeConfigInterface::class);
|
|
$this->storeManager = $objectManager->get(StoreManagerInterface::class);
|
|
}
|
|
|
|
/**
|
|
* @magentoAppArea frontend
|
|
* @magentoDataFixture Magento/Store/_files/second_website_with_two_stores.php
|
|
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
|
*/
|
|
public function testConfigClearShoppingCartEnabledWithWebsiteScopes()
|
|
{
|
|
// Assert not active by default
|
|
$this->assertFalse($this->cart->isClearShoppingCartEnabled());
|
|
|
|
// Enable Clear Shopping Cart in default website scope
|
|
$this->setClearShoppingCartEnabled(
|
|
true,
|
|
ScopeInterface::SCOPE_WEBSITE
|
|
);
|
|
|
|
// Assert now active in default website scope
|
|
$this->assertTrue($this->cart->isClearShoppingCartEnabled());
|
|
|
|
$defaultStore = $this->storeManager->getStore();
|
|
$defaultWebsite = $defaultStore->getWebsite();
|
|
$defaultWebsiteCode = $defaultWebsite->getCode();
|
|
|
|
$secondStore = $this->storeManager->getStore('fixture_second_store');
|
|
$secondWebsite = $secondStore->getWebsite();
|
|
$secondWebsiteCode = $secondWebsite->getCode();
|
|
|
|
// Change current store context to that of second website
|
|
$this->storeManager->setCurrentStore($secondStore);
|
|
|
|
// Assert not active by default in second website
|
|
$this->assertFalse($this->cart->isClearShoppingCartEnabled());
|
|
|
|
// Enable Clear Shopping Cart in second website scope
|
|
$this->setClearShoppingCartEnabled(
|
|
true,
|
|
ScopeInterface::SCOPE_WEBSITE,
|
|
$secondWebsiteCode
|
|
);
|
|
|
|
// Assert now active in second website scope
|
|
$this->assertTrue($this->cart->isClearShoppingCartEnabled());
|
|
|
|
// Disable Clear Shopping Cart in default website scope
|
|
$this->setClearShoppingCartEnabled(
|
|
false,
|
|
ScopeInterface::SCOPE_WEBSITE,
|
|
$defaultWebsiteCode
|
|
);
|
|
|
|
// Assert still active in second website
|
|
$this->assertTrue($this->cart->isClearShoppingCartEnabled());
|
|
}
|
|
|
|
/**
|
|
* Set clear shopping cart enabled.
|
|
*
|
|
* @param bool $isActive
|
|
* @param string $scope
|
|
* @param string|null $scopeCode
|
|
*/
|
|
private function setClearShoppingCartEnabled(bool $isActive, string $scope, $scopeCode = null)
|
|
{
|
|
$this->mutableScopeConfig->setValue(
|
|
'checkout/cart/enable_clear_shopping_cart',
|
|
$isActive ? '1' : '0',
|
|
$scope,
|
|
$scopeCode
|
|
);
|
|
}
|
|
}
|